JS API Reference

Class: MarketApiAdapter

shared/yagna/adapters/market-api-adapter.MarketApiAdapter

Implements

Table of contents

Constructors

Methods

Constructors

constructor

new MarketApiAdapter(yagnaApi, agreementRepo, proposalRepo, demandRepo, logger): MarketApiAdapter

Parameters

NameType
yagnaApiYagnaApi
agreementRepoIAgreementRepository
proposalRepoIProposalRepository
demandRepoIDemandRepository
loggerLogger

Returns

MarketApiAdapter

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:45

Methods

publishDemandSpecification

publishDemandSpecification(spec): Promise<Demand>

Creates a new demand based on the given specification and publishes it to the market. Keep in mind that the demand lasts for a limited time and needs to be refreshed periodically (see refreshDemand method). Use unpublishDemand to remove the demand from the market.

Parameters

NameType
specDemandSpecification

Returns

Promise<Demand>

Implementation of

IMarketApi.publishDemandSpecification

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:53


unpublishDemand

unpublishDemand(demand): Promise<void>

Remove the given demand from the market.

Parameters

NameType
demandDemand

Returns

Promise<void>

Implementation of

IMarketApi.unpublishDemand

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:66


collectMarketProposalEvents

collectMarketProposalEvents(demand): Observable<MarketProposalEvent>

"Publishes" the demand on the network and stats to listen (event polling) for the events representing the feedback

The feedback can fall into four categories:

  • (Initial) We will receive initial offer proposals that were matched by the yagna node which we're using
  • (Negotiations) We will receive responses from providers with draft offer proposals if we decided to counter the initial proposal
  • (Negotiations) We will receive an event representing rejection of our counter-proposal by the provider
  • (Negotiations) We will receive a question from the provider about a certain property as part of the negotiation process (protocol piece not by yagna 0.15)

Parameters

NameType
demandDemand

Returns

Observable<MarketProposalEvent>

A complex object that allows subscribing to these categories of feedback mentioned above

Implementation of

IMarketApi.collectMarketProposalEvents

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:74


counterProposal

counterProposal(receivedProposal, demand): Promise<OfferCounterProposal>

Sends a counter-proposal to the given proposal. Returns the newly created counter-proposal.

Parameters

NameType
receivedProposalOfferProposal
demandDemandSpecification

Returns

Promise<OfferCounterProposal>

Implementation of

IMarketApi.counterProposal

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:159


rejectProposal

rejectProposal(receivedProposal, reason): Promise<void>

Sends a "reject" response for the proposal that was received from the Provider as part of the negotiation process

On the protocol level this means that no further counter-proposals will be generated by the Requestor

Parameters

NameTypeDescription
receivedProposalOfferProposalThe proposal from the provider
reasonstringUser readable reason that should be presented to the Provider

Returns

Promise<void>

Implementation of

IMarketApi.rejectProposal

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:182


getPaymentRelatedDemandDecorations(allocationId): Promise<DemandBodyPrototype>

Fetches payment related decorations, based on the given allocation ID.

Parameters

NameTypeDescription
allocationIdstringThe ID of the allocation that will be used to pay for computations related to the demand

Returns

Promise<DemandBodyPrototype>

Implementation of

IMarketApi.getPaymentRelatedDemandDecorations

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:212


confirmAgreement

confirmAgreement(agreement, options?): Promise<Agreement>

Confirms the agreement with the provider

Parameters

NameType
agreementAgreement
options?AgreementOptions

Returns

Promise<Agreement>

Implementation of

IMarketApi.confirmAgreement

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:216


createAgreement

createAgreement(proposal, options?): Promise<Agreement>

Request creating an agreement from the provided proposal

Use this method if you want to decide what should happen with the agreement after it is created

Parameters

NameType
proposalOfferProposal
options?AgreementOptions

Returns

Promise<Agreement>

An agreement that's in a "Proposal" state (not yet usable for activity creation)

Implementation of

IMarketApi.createAgreement

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:237


proposeAgreement

proposeAgreement(proposal, options?): Promise<Agreement>

Request creating an agreement from the provided proposal, send it to the Provider and wait for approval

Use this method when you want to quickly finalize the deal with the Provider, but be ready for a rejection

Parameters

NameType
proposalOfferProposal
options?AgreementOptions

Returns

Promise<Agreement>

An agreement that's already in an "Approved" state and can be used to create activities on the Provider

Implementation of

IMarketApi.proposeAgreement

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:274


getAgreement

getAgreement(id): Promise<Agreement>

Retrieves an agreement based on the provided ID.

Parameters

NameType
idstring

Returns

Promise<Agreement>

Implementation of

IMarketApi.getAgreement

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:291


getAgreementState

getAgreementState(id): Promise<AgreementState>

Retrieves the state of an agreement based on the provided agreement ID.

Parameters

NameType
idstring

Returns

Promise<AgreementState>

Implementation of

IMarketApi.getAgreementState

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:295


terminateAgreement

terminateAgreement(agreement, reason?): Promise<Agreement>

Terminates an agreement.

Parameters

NameTypeDefault value
agreementAgreementundefined
reasonstring"Finished"

Returns

Promise<Agreement>

Implementation of

IMarketApi.terminateAgreement

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:300


collectAgreementEvents

collectAgreementEvents(): Observable<AgreementEvent>

Start looking at the Agreement related events

Returns

Observable<AgreementEvent>

Implementation of

IMarketApi.collectAgreementEvents

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:329


scan

scan(spec): Observable<ScannedOffer>

Scan the market for offers that match the given specification.

Parameters

NameType
specScanSpecification

Returns

Observable<ScannedOffer>

Implementation of

IMarketApi.scan

Defined in

src/shared/yagna/adapters/market-api-adapter.ts:403