import { EntryHash } from "@holochain/client";
import { AgentAddress, AgreementAddress, RecipeProcessAddress, CommitmentAddress, EconomicEventAddress, EconomicResourceAddress, FulfillmentAddress, IntentAddress, PlanAddress, ProcessAddress, ProposedIntentAddress, ResourceSpecificationAddress, SatisfactionAddress, ProposalAddress, RecipeExchangeAddress } from "../types";
export interface PagingParams {
    last?: number;
    before?: EntryHash;
}
interface SearchInput<QueryParamType> {
    params: QueryParamType;
}
export declare type CommitmentSearchInput = SearchInput<CommitmentQueryParam>;
export declare type EconomicEventSearchInput = SearchInput<EconomicEventQueryParams>;
export declare type FulfillmentSearchInput = SearchInput<FulfillmentQueryParams>;
export declare type SatisfactionSearchInput = SearchInput<SatisfactionQueryParams>;
export declare type ProcessSearchInput = SearchInput<ProcessQueryParams>;
export declare type ResourceSpecificationSearchInput = SearchInput<ResourceSpecificationQueryParams>;
export declare type EconomicResourceSearchInput = SearchInput<EconomicResourceQueryParams>;
export declare type IntentSearchInput = SearchInput<IntentQueryParams>;
export declare type PlanSearchInput = SearchInput<PlanQueryParams>;
export declare type ProposalSearchInput = SearchInput<ProposalQueryParams>;
export declare type AgentSearchInput = SearchInput<AgentQueryParams>;
export declare type ProposedIntentSearchInput = SearchInput<ProposedIntentQueryParams>;
export declare type RecipeFlowSearchInput = SearchInput<RecipeFlowQueryParams>;
interface CommitmentQueryParam {
    inputOf?: ProcessAddress;
    outputOf?: ProcessAddress;
    fulfilledBy?: FulfillmentAddress;
    satisfies?: SatisfactionAddress;
    clauseOf?: AgreementAddress;
    independentDemandOf?: PlanAddress;
    plannedWithin?: PlanAddress;
    inScopeOf?: AgentAddress;
    provider?: AgentAddress;
    receiver?: AgentAddress;
}
interface EconomicEventQueryParams {
    inputOf?: ProcessAddress;
    outputOf?: ProcessAddress;
    satisfies?: IntentAddress;
    fulfills?: CommitmentAddress;
    realizationOf?: AgreementAddress;
    affects?: EconomicResourceAddress;
    inScopeOf?: AgentAddress;
    provider?: AgentAddress;
    receiver?: AgentAddress;
}
interface FulfillmentQueryParams {
    fulfills?: CommitmentAddress;
    fulfilledBy?: EconomicEventAddress;
}
interface SatisfactionQueryParams {
    satisfies?: IntentAddress;
    satisfiedBy?: CommitmentAddress;
}
interface ProcessQueryParams {
    observedInputs?: EconomicEventAddress;
    observedOutputs?: EconomicEventAddress;
    unplannedEconomicEvents?: EconomicEventAddress;
    committedInputs?: CommitmentAddress;
    committedOutputs?: CommitmentAddress;
    intendedInputs?: IntentAddress;
    intendedOutputs?: IntentAddress;
    workingAgents?: AgentAddress;
    plannedWithin?: PlanAddress;
    inScopeOf?: AgentAddress;
}
interface ResourceSpecificationQueryParams {
    conformingResources?: EconomicResourceAddress;
}
interface EconomicResourceQueryParams {
    contains?: EconomicResourceAddress;
    containedIn?: EconomicResourceAddress;
    conformsTo?: ResourceSpecificationAddress;
    affectedBy?: EconomicEventAddress;
    primaryAccountable?: AgentAddress;
}
interface IntentQueryParams {
    inputOf?: ProcessAddress;
    outputOf?: ProcessAddress;
    satisfiedBy?: SatisfactionAddress;
    proposedIn?: ProposedIntentAddress;
    inScopeOf?: AgentAddress;
    provider?: AgentAddress;
    receiver?: AgentAddress;
    publishedIn?: ProposedIntentAddress;
}
interface ProposedIntentQueryParams {
    publishedIn?: ProposalAddress;
}
interface PlanQueryParams {
    inScopeOf?: AgentAddress;
}
interface ProposalQueryParams {
    inScopeOf?: AgentAddress;
}
interface AgentQueryParams {
    agentType?: string;
}
interface RecipeFlowQueryParams {
    recipeInputOf?: RecipeProcessAddress;
    recipeOutputOf?: RecipeProcessAddress;
    recipeClauseOf?: RecipeExchangeAddress;
    recipeReciprocalClauseOf?: RecipeExchangeAddress;
}
export {};
