// package: cosmwasm.wasm.v1
// file: cosmwasm/wasm/v1/authz.proto

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

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

export class ContractExecutionAuthorization extends jspb.Message { 
    clearGrantsList(): void;
    getGrantsList(): Array<ContractGrant>;
    setGrantsList(value: Array<ContractGrant>): ContractExecutionAuthorization;
    addGrants(value?: ContractGrant, index?: number): ContractGrant;

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

export namespace ContractExecutionAuthorization {
    export type AsObject = {
        grantsList: Array<ContractGrant.AsObject>,
    }
}

export class ContractMigrationAuthorization extends jspb.Message { 
    clearGrantsList(): void;
    getGrantsList(): Array<ContractGrant>;
    setGrantsList(value: Array<ContractGrant>): ContractMigrationAuthorization;
    addGrants(value?: ContractGrant, index?: number): ContractGrant;

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

export namespace ContractMigrationAuthorization {
    export type AsObject = {
        grantsList: Array<ContractGrant.AsObject>,
    }
}

export class ContractGrant extends jspb.Message { 
    getContract(): string;
    setContract(value: string): ContractGrant;

    hasLimit(): boolean;
    clearLimit(): void;
    getLimit(): google_protobuf_any_pb.Any | undefined;
    setLimit(value?: google_protobuf_any_pb.Any): ContractGrant;

    hasFilter(): boolean;
    clearFilter(): void;
    getFilter(): google_protobuf_any_pb.Any | undefined;
    setFilter(value?: google_protobuf_any_pb.Any): ContractGrant;

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

export namespace ContractGrant {
    export type AsObject = {
        contract: string,
        limit?: google_protobuf_any_pb.Any.AsObject,
        filter?: google_protobuf_any_pb.Any.AsObject,
    }
}

export class MaxCallsLimit extends jspb.Message { 
    getRemaining(): number;
    setRemaining(value: number): MaxCallsLimit;

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

export namespace MaxCallsLimit {
    export type AsObject = {
        remaining: number,
    }
}

export class MaxFundsLimit extends jspb.Message { 
    clearAmountsList(): void;
    getAmountsList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setAmountsList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): MaxFundsLimit;
    addAmounts(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;

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

export namespace MaxFundsLimit {
    export type AsObject = {
        amountsList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
    }
}

export class CombinedLimit extends jspb.Message { 
    getCallsRemaining(): number;
    setCallsRemaining(value: number): CombinedLimit;
    clearAmountsList(): void;
    getAmountsList(): Array<cosmos_base_v1beta1_coin_pb.Coin>;
    setAmountsList(value: Array<cosmos_base_v1beta1_coin_pb.Coin>): CombinedLimit;
    addAmounts(value?: cosmos_base_v1beta1_coin_pb.Coin, index?: number): cosmos_base_v1beta1_coin_pb.Coin;

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

export namespace CombinedLimit {
    export type AsObject = {
        callsRemaining: number,
        amountsList: Array<cosmos_base_v1beta1_coin_pb.Coin.AsObject>,
    }
}

export class AllowAllMessagesFilter extends jspb.Message { 

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

export namespace AllowAllMessagesFilter {
    export type AsObject = {
    }
}

export class AcceptedMessageKeysFilter extends jspb.Message { 
    clearKeysList(): void;
    getKeysList(): Array<string>;
    setKeysList(value: Array<string>): AcceptedMessageKeysFilter;
    addKeys(value: string, index?: number): string;

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

export namespace AcceptedMessageKeysFilter {
    export type AsObject = {
        keysList: Array<string>,
    }
}

export class AcceptedMessagesFilter extends jspb.Message { 
    clearMessagesList(): void;
    getMessagesList(): Array<Uint8Array | string>;
    getMessagesList_asU8(): Array<Uint8Array>;
    getMessagesList_asB64(): Array<string>;
    setMessagesList(value: Array<Uint8Array | string>): AcceptedMessagesFilter;
    addMessages(value: Uint8Array | string, index?: number): Uint8Array | string;

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

export namespace AcceptedMessagesFilter {
    export type AsObject = {
        messagesList: Array<Uint8Array | string>,
    }
}
