// @generated by protobuf-ts 2.10.0 with parameter optimize_code_size
// @generated from protobuf file "search_svc.proto" (package "search_svc", syntax proto3)
// tslint:disable
//
// Code generated with goa v3.20.1, DO NOT EDIT.
//
// SearchSvc protocol buffer definition
//
// Command:
// $ goa gen github.com/searchmoe/search-service/api/design -o ../
//
import { ServiceType } from "@protobuf-ts/runtime-rpc";
import { MessageType } from "@protobuf-ts/runtime";
/**
 * @generated from protobuf message search_svc.TextSearchNewRequest
 */
export interface TextSearchNewRequest {
    /**
     * Session metadata.
     *
     * @generated from protobuf field: search_svc.SessionMetadata session_metadata = 1;
     */
    sessionMetadata?: SessionMetadata;
    /**
     * Text of the search query.
     *
     * @generated from protobuf field: string query = 2;
     */
    query: string;
}
/**
 * @generated from protobuf message search_svc.SessionMetadata
 */
export interface SessionMetadata {
    /**
     * Search session ID.
     *
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * Preferred language ISO 639-1 code.
     *
     * @generated from protobuf field: optional string preferred_language = 2;
     */
    preferredLanguage?: string;
    /**
     * Suggested language ISO 639-1 code.
     *
     * @generated from protobuf field: optional string suggested_language = 3;
     */
    suggestedLanguage?: string;
    /**
     * Location country ISO 3166-1 alpha-2 code.
     *
     * @generated from protobuf field: optional string location_country = 4;
     */
    locationCountry?: string;
    /**
     * Location latitude in degrees.
     *
     * @generated from protobuf field: optional double location_lat = 5;
     */
    locationLat?: number;
    /**
     * Location longitude in degrees.
     *
     * @generated from protobuf field: optional double location_lon = 6;
     */
    locationLon?: number;
}
/**
 * @generated from protobuf message search_svc.TextSearchNewResponse
 */
export interface TextSearchNewResponse {
    /**
     * Search session ID.
     *
     * @generated from protobuf field: string session_id = 1;
     */
    sessionId: string;
    /**
     * Deducted title of the search query.
     *
     * @generated from protobuf field: optional string title = 2;
     */
    title?: string;
    /**
     * Chunk of the text answer.
     *
     * @generated from protobuf field: search_svc.AnswerChunk answer_chunk = 3;
     */
    answerChunk?: AnswerChunk;
    /**
     * Citation to be included in the answer and citations.
     *
     * @generated from protobuf field: search_svc.AnswerCitation answer_citation = 4;
     */
    answerCitation?: AnswerCitation;
    /**
     * Chunk of the post-processed text answer.
     *
     * @generated from protobuf field: search_svc.AnswerChunk pp_answer_chunk = 5;
     */
    ppAnswerChunk?: AnswerChunk;
    /**
     * Citation to be included in the post-processed answer and citations.
     *
     * @generated from protobuf field: search_svc.AnswerCitation pp_answer_citation = 6;
     */
    ppAnswerCitation?: AnswerCitation;
    /**
     * Link from search results (separate to answer and citations).
     *
     * @generated from protobuf field: search_svc.Link link = 7;
     */
    link?: Link;
    /**
     * Image from search results.
     *
     * @generated from protobuf field: search_svc.Image image = 8;
     */
    image?: Image;
    /**
     * Product from search results.
     *
     * @generated from protobuf field: search_svc.Product product = 9;
     */
    product?: Product;
    /**
     * Error if occurred during the search.
     *
     * @generated from protobuf field: search_svc.Error error = 10;
     */
    error?: Error;
}
/**
 * @generated from protobuf message search_svc.AnswerChunk
 */
export interface AnswerChunk {
    /**
     * Text of the answer chunk.
     *
     * @generated from protobuf field: string text = 1;
     */
    text: string;
    /**
     * Whether this is the last chunk of the answer.
     *
     * @generated from protobuf field: optional bool is_last = 2;
     */
    isLast?: boolean;
}
/**
 * @generated from protobuf message search_svc.AnswerCitation
 */
export interface AnswerCitation {
    /**
     * ID of the citation.
     *
     * @generated from protobuf field: string id = 1;
     */
    id: string;
    /**
     * Title of the citation.
     *
     * @generated from protobuf field: string title = 2;
     */
    title: string;
    /**
     * URL of the citation.
     *
     * @generated from protobuf field: string url = 3;
     */
    url: string;
    /**
     * Whether this is the last citation.
     *
     * @generated from protobuf field: optional bool is_last = 4;
     */
    isLast?: boolean;
}
/**
 * @generated from protobuf message search_svc.Link
 */
export interface Link {
    /**
     * URL of the link.
     *
     * @generated from protobuf field: string url = 1;
     */
    url: string;
    /**
     * Title of the link.
     *
     * @generated from protobuf field: string title = 2;
     */
    title: string;
    /**
     * Description of the link.
     *
     * @generated from protobuf field: optional string description = 3;
     */
    description?: string;
    /**
     * Favicon URL of the website the link belongs to.
     *
     * @generated from protobuf field: optional string favicon = 4;
     */
    favicon?: string;
}
/**
 * @generated from protobuf message search_svc.Image
 */
export interface Image {
    /**
     * ID of the image.
     *
     * @generated from protobuf field: string id = 1;
     */
    id: string;
    /**
     * Source URL of the image.
     *
     * @generated from protobuf field: string src = 2;
     */
    src: string;
    /**
     * URL that the image links to.
     *
     * @generated from protobuf field: string link_url = 3;
     */
    linkUrl: string;
    /**
     * Title of the image.
     *
     * @generated from protobuf field: string title = 4;
     */
    title: string;
    /**
     * Description of the image.
     *
     * @generated from protobuf field: optional string description = 5;
     */
    description?: string;
    /**
     * Favicon URL of the website the image belongs to.
     *
     * @generated from protobuf field: optional string favicon = 6;
     */
    favicon?: string;
}
/**
 * @generated from protobuf message search_svc.Product
 */
export interface Product {
    /**
     * ID of the product.
     *
     * @generated from protobuf field: string id = 1;
     */
    id: string;
    /**
     * Title of the product.
     *
     * @generated from protobuf field: string title = 2;
     */
    title: string;
    /**
     * Description of the product.
     *
     * @generated from protobuf field: string description = 3;
     */
    description: string;
    /**
     * Price of the product.
     *
     * @generated from protobuf field: double price = 4;
     */
    price: number;
    /**
     * Availability status of the product.
     *
     * @generated from protobuf field: string availability = 5;
     */
    availability: string;
    /**
     * Currency of the product price.
     *
     * @generated from protobuf field: string currency = 6;
     */
    currency: string;
    /**
     * Cover image URL of the product.
     *
     * @generated from protobuf field: string cover_image = 7;
     */
    coverImage: string;
    /**
     * URL link to the product.
     *
     * @generated from protobuf field: string link_url = 8;
     */
    linkUrl: string;
    /**
     * ID of the marketplace where the product is listed.
     *
     * @generated from protobuf field: string marketplace_id = 9;
     */
    marketplaceId: string;
    /**
     * Favicon of the marketplace website, can be null.
     *
     * @generated from protobuf field: optional string favicon = 10;
     */
    favicon?: string;
}
/**
 * @generated from protobuf message search_svc.Error
 */
export interface Error {
    /**
     * Error message.
     *
     * @generated from protobuf field: string message_ = 1;
     */
    message: string;
    /**
     * Route where the error occurred.
     *
     * @generated from protobuf field: string route = 2;
     */
    route: string;
}
// @generated message type with reflection information, may provide speed optimized methods
class TextSearchNewRequest$Type extends MessageType<TextSearchNewRequest> {
    constructor() {
        super("search_svc.TextSearchNewRequest", [
            { no: 1, name: "session_metadata", kind: "message", T: () => SessionMetadata },
            { no: 2, name: "query", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.TextSearchNewRequest
 */
export const TextSearchNewRequest = new TextSearchNewRequest$Type();
// @generated message type with reflection information, may provide speed optimized methods
class SessionMetadata$Type extends MessageType<SessionMetadata> {
    constructor() {
        super("search_svc.SessionMetadata", [
            { no: 1, name: "session_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "preferred_language", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "suggested_language", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "location_country", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 5, name: "location_lat", kind: "scalar", opt: true, T: 1 /*ScalarType.DOUBLE*/ },
            { no: 6, name: "location_lon", kind: "scalar", opt: true, T: 1 /*ScalarType.DOUBLE*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.SessionMetadata
 */
export const SessionMetadata = new SessionMetadata$Type();
// @generated message type with reflection information, may provide speed optimized methods
class TextSearchNewResponse$Type extends MessageType<TextSearchNewResponse> {
    constructor() {
        super("search_svc.TextSearchNewResponse", [
            { no: 1, name: "session_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "title", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "answer_chunk", kind: "message", T: () => AnswerChunk },
            { no: 4, name: "answer_citation", kind: "message", T: () => AnswerCitation },
            { no: 5, name: "pp_answer_chunk", kind: "message", T: () => AnswerChunk },
            { no: 6, name: "pp_answer_citation", kind: "message", T: () => AnswerCitation },
            { no: 7, name: "link", kind: "message", T: () => Link },
            { no: 8, name: "image", kind: "message", T: () => Image },
            { no: 9, name: "product", kind: "message", T: () => Product },
            { no: 10, name: "error", kind: "message", T: () => Error }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.TextSearchNewResponse
 */
export const TextSearchNewResponse = new TextSearchNewResponse$Type();
// @generated message type with reflection information, may provide speed optimized methods
class AnswerChunk$Type extends MessageType<AnswerChunk> {
    constructor() {
        super("search_svc.AnswerChunk", [
            { no: 1, name: "text", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "is_last", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.AnswerChunk
 */
export const AnswerChunk = new AnswerChunk$Type();
// @generated message type with reflection information, may provide speed optimized methods
class AnswerCitation$Type extends MessageType<AnswerCitation> {
    constructor() {
        super("search_svc.AnswerCitation", [
            { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "title", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "is_last", kind: "scalar", opt: true, T: 8 /*ScalarType.BOOL*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.AnswerCitation
 */
export const AnswerCitation = new AnswerCitation$Type();
// @generated message type with reflection information, may provide speed optimized methods
class Link$Type extends MessageType<Link> {
    constructor() {
        super("search_svc.Link", [
            { no: 1, name: "url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "title", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "favicon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.Link
 */
export const Link = new Link$Type();
// @generated message type with reflection information, may provide speed optimized methods
class Image$Type extends MessageType<Image> {
    constructor() {
        super("search_svc.Image", [
            { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "src", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "link_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "title", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 5, name: "description", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ },
            { no: 6, name: "favicon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.Image
 */
export const Image = new Image$Type();
// @generated message type with reflection information, may provide speed optimized methods
class Product$Type extends MessageType<Product> {
    constructor() {
        super("search_svc.Product", [
            { no: 1, name: "id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "title", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 3, name: "description", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 4, name: "price", kind: "scalar", T: 1 /*ScalarType.DOUBLE*/ },
            { no: 5, name: "availability", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 6, name: "currency", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 7, name: "cover_image", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 8, name: "link_url", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 9, name: "marketplace_id", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 10, name: "favicon", kind: "scalar", opt: true, T: 9 /*ScalarType.STRING*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.Product
 */
export const Product = new Product$Type();
// @generated message type with reflection information, may provide speed optimized methods
class Error$Type extends MessageType<Error> {
    constructor() {
        super("search_svc.Error", [
            { no: 1, name: "message_", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
            { no: 2, name: "route", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
        ]);
    }
}
/**
 * @generated MessageType for protobuf message search_svc.Error
 */
export const Error = new Error$Type();
/**
 * @generated ServiceType for protobuf service search_svc.SearchSvc
 */
export const SearchSvc = new ServiceType("search_svc.SearchSvc", [
    { name: "TextSearchNew", serverStreaming: true, options: {}, I: TextSearchNewRequest, O: TextSearchNewResponse }
]);
