// package: provenance.exchange.v1
// file: provenance/exchange/v1/market.proto

/* tslint:disable */
/* eslint-disable */

import * as jspb from "google-protobuf";
import * as cosmos_auth_v1beta1_auth_pb from "../../../cosmos/auth/v1beta1/auth_pb";
import * as cosmos_base_v1beta1_coin_pb from "../../../cosmos/base/v1beta1/coin_pb";
import * as cosmos_proto_cosmos_pb from "../../../cosmos_proto/cosmos_pb";
import * as gogoproto_gogo_pb from "../../../gogoproto/gogo_pb";

export class MarketAccount extends jspb.Message { 

    hasBaseAccount(): boolean;
    clearBaseAccount(): void;
    getBaseAccount(): cosmos_auth_v1beta1_auth_pb.BaseAccount | undefined;
    setBaseAccount(value?: cosmos_auth_v1beta1_auth_pb.BaseAccount): MarketAccount;
    getMarketId(): number;
    setMarketId(value: number): MarketAccount;

    hasMarketDetails(): boolean;
    clearMarketDetails(): void;
    getMarketDetails(): MarketDetails | undefined;
    setMarketDetails(value?: MarketDetails): MarketAccount;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MarketAccount.AsObject;
    static toObject(includeInstance: boolean, msg: MarketAccount): MarketAccount.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MarketAccount, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MarketAccount;
    static deserializeBinaryFromReader(message: MarketAccount, reader: jspb.BinaryReader): MarketAccount;
}

export namespace MarketAccount {
    export type AsObject = {
        baseAccount?: cosmos_auth_v1beta1_auth_pb.BaseAccount.AsObject,
        marketId: number,
        marketDetails?: MarketDetails.AsObject,
    }
}

export class MarketDetails extends jspb.Message { 
    getName(): string;
    setName(value: string): MarketDetails;
    getDescription(): string;
    setDescription(value: string): MarketDetails;
    getWebsiteUrl(): string;
    setWebsiteUrl(value: string): MarketDetails;
    getIconUri(): string;
    setIconUri(value: string): MarketDetails;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MarketDetails.AsObject;
    static toObject(includeInstance: boolean, msg: MarketDetails): MarketDetails.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MarketDetails, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MarketDetails;
    static deserializeBinaryFromReader(message: MarketDetails, reader: jspb.BinaryReader): MarketDetails;
}

export namespace MarketDetails {
    export type AsObject = {
        name: string,
        description: string,
        websiteUrl: string,
        iconUri: string,
    }
}

export class MarketBrief extends jspb.Message { 
    getMarketId(): number;
    setMarketId(value: number): MarketBrief;
    getMarketAddress(): string;
    setMarketAddress(value: string): MarketBrief;

    hasMarketDetails(): boolean;
    clearMarketDetails(): void;
    getMarketDetails(): MarketDetails | undefined;
    setMarketDetails(value?: MarketDetails): MarketBrief;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): MarketBrief.AsObject;
    static toObject(includeInstance: boolean, msg: MarketBrief): MarketBrief.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: MarketBrief, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): MarketBrief;
    static deserializeBinaryFromReader(message: MarketBrief, reader: jspb.BinaryReader): MarketBrief;
}

export namespace MarketBrief {
    export type AsObject = {
        marketId: number,
        marketAddress: string,
        marketDetails?: MarketDetails.AsObject,
    }
}

export class Market extends jspb.Message { 
    getMarketId(): number;
    setMarketId(value: number): Market;

    hasMarketDetails(): boolean;
    clearMarketDetails(): void;
    getMarketDetails(): MarketDetails | undefined;
    setMarketDetails(value?: MarketDetails): Market;
    clearFeeCreateAskFlatList(): void;
    getFeeCreateAskFlatList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setFeeCreateAskFlatList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): Market;
    addFeeCreateAskFlat(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;
    clearFeeCreateBidFlatList(): void;
    getFeeCreateBidFlatList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setFeeCreateBidFlatList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): Market;
    addFeeCreateBidFlat(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;
    clearFeeSellerSettlementFlatList(): void;
    getFeeSellerSettlementFlatList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setFeeSellerSettlementFlatList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): Market;
    addFeeSellerSettlementFlat(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;
    clearFeeSellerSettlementRatiosList(): void;
    getFeeSellerSettlementRatiosList(): Array<FeeRatio>;
    setFeeSellerSettlementRatiosList(value: Array<FeeRatio>): Market;
    addFeeSellerSettlementRatios(value?: FeeRatio, index?: number): FeeRatio;
    clearFeeBuyerSettlementFlatList(): void;
    getFeeBuyerSettlementFlatList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setFeeBuyerSettlementFlatList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): Market;
    addFeeBuyerSettlementFlat(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;
    clearFeeBuyerSettlementRatiosList(): void;
    getFeeBuyerSettlementRatiosList(): Array<FeeRatio>;
    setFeeBuyerSettlementRatiosList(value: Array<FeeRatio>): Market;
    addFeeBuyerSettlementRatios(value?: FeeRatio, index?: number): FeeRatio;
    getAcceptingOrders(): boolean;
    setAcceptingOrders(value: boolean): Market;
    getAllowUserSettlement(): boolean;
    setAllowUserSettlement(value: boolean): Market;
    clearAccessGrantsList(): void;
    getAccessGrantsList(): Array<AccessGrant>;
    setAccessGrantsList(value: Array<AccessGrant>): Market;
    addAccessGrants(value?: AccessGrant, index?: number): AccessGrant;
    clearReqAttrCreateAskList(): void;
    getReqAttrCreateAskList(): Array<string>;
    setReqAttrCreateAskList(value: Array<string>): Market;
    addReqAttrCreateAsk(value: string, index?: number): string;
    clearReqAttrCreateBidList(): void;
    getReqAttrCreateBidList(): Array<string>;
    setReqAttrCreateBidList(value: Array<string>): Market;
    addReqAttrCreateBid(value: string, index?: number): string;
    getAcceptingCommitments(): boolean;
    setAcceptingCommitments(value: boolean): Market;
    clearFeeCreateCommitmentFlatList(): void;
    getFeeCreateCommitmentFlatList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setFeeCreateCommitmentFlatList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): Market;
    addFeeCreateCommitmentFlat(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;
    getCommitmentSettlementBips(): number;
    setCommitmentSettlementBips(value: number): Market;
    getIntermediaryDenom(): string;
    setIntermediaryDenom(value: string): Market;
    clearReqAttrCreateCommitmentList(): void;
    getReqAttrCreateCommitmentList(): Array<string>;
    setReqAttrCreateCommitmentList(value: Array<string>): Market;
    addReqAttrCreateCommitment(value: string, index?: number): string;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): Market.AsObject;
    static toObject(includeInstance: boolean, msg: Market): Market.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: Market, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): Market;
    static deserializeBinaryFromReader(message: Market, reader: jspb.BinaryReader): Market;
}

export namespace Market {
    export type AsObject = {
        marketId: number,
        marketDetails?: MarketDetails.AsObject,
        feeCreateAskFlatList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
        feeCreateBidFlatList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
        feeSellerSettlementFlatList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
        feeSellerSettlementRatiosList: Array<FeeRatio.AsObject>,
        feeBuyerSettlementFlatList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
        feeBuyerSettlementRatiosList: Array<FeeRatio.AsObject>,
        acceptingOrders: boolean,
        allowUserSettlement: boolean,
        accessGrantsList: Array<AccessGrant.AsObject>,
        reqAttrCreateAskList: Array<string>,
        reqAttrCreateBidList: Array<string>,
        acceptingCommitments: boolean,
        feeCreateCommitmentFlatList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
        commitmentSettlementBips: number,
        intermediaryDenom: string,
        reqAttrCreateCommitmentList: Array<string>,
    }
}

export class FeeRatio extends jspb.Message { 

    hasPrice(): boolean;
    clearPrice(): void;
    getPrice(): cosmos_base_v1beta1_coin_pb.Coin | undefined;
    setPrice(value?: cosmos_base_v1beta1_coin_pb.Coin): FeeRatio;

    hasFee(): boolean;
    clearFee(): void;
    getFee(): cosmos_base_v1beta1_coin_pb.Coin | undefined;
    setFee(value?: cosmos_base_v1beta1_coin_pb.Coin): FeeRatio;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): FeeRatio.AsObject;
    static toObject(includeInstance: boolean, msg: FeeRatio): FeeRatio.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: FeeRatio, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): FeeRatio;
    static deserializeBinaryFromReader(message: FeeRatio, reader: jspb.BinaryReader): FeeRatio;
}

export namespace FeeRatio {
    export type AsObject = {
        price?: cosmos_base_v1beta1_coin_pb.Coin.AsObject,
        fee?: cosmos_base_v1beta1_coin_pb.Coin.AsObject,
    }
}

export class AccessGrant extends jspb.Message { 
    getAddress(): string;
    setAddress(value: string): AccessGrant;
    clearPermissionsList(): void;
    getPermissionsList(): Array<Permission>;
    setPermissionsList(value: Array<Permission>): AccessGrant;
    addPermissions(value: Permission, index?: number): Permission;

    serializeBinary(): Uint8Array;
    toObject(includeInstance?: boolean): AccessGrant.AsObject;
    static toObject(includeInstance: boolean, msg: AccessGrant): AccessGrant.AsObject;
    static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
    static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
    static serializeBinaryToWriter(message: AccessGrant, writer: jspb.BinaryWriter): void;
    static deserializeBinary(bytes: Uint8Array): AccessGrant;
    static deserializeBinaryFromReader(message: AccessGrant, reader: jspb.BinaryReader): AccessGrant;
}

export namespace AccessGrant {
    export type AsObject = {
        address: string,
        permissionsList: Array<Permission>,
    }
}

export enum Permission {
    PERMISSION_UNSPECIFIED = 0,
    PERMISSION_SETTLE = 1,
    PERMISSION_SET_IDS = 2,
    PERMISSION_CANCEL = 3,
    PERMISSION_WITHDRAW = 4,
    PERMISSION_UPDATE = 5,
    PERMISSION_PERMISSIONS = 6,
    PERMISSION_ATTRIBUTES = 7,
}
