InterledgerQuotingProtocol DEFINITIONS AUTOMATIC TAGS ::= BEGIN

IMPORTS UInt32, UInt64 FROM GenericTypes

Address,
LiquidityCurve
FROM InterledgerTypes

;

-- Request to receive liquidity information between the current ledger and the -- destination account. This information is sufficient to locally quote any -- amount until the curve expires. QuoteLiquidityRequestData ::= SEQUENCE { destinationAccount Address, -- How much time the receiver needs to fulfill the payment (in milliseconds) destinationHoldDuration UInt32,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

QuoteLiquidityResponseData ::= SEQUENCE { -- Curve describing the liquidity (relationship between input and output -- amounts) for the quoted route liquidity LiquidityCurve, -- Common prefix of all addresses for which this liquidity curve applies. -- If the curve only applies to the destinationAccount requested this MUST -- be set equal to that address. If the curve applies to other accounts -- with a certain prefix, this value should be set to that prefix. For more -- on ILP Address Prefixes, see IL-RFC-0015: -- https://interledger.org/rfcs/0015-ilp-addresses/ appliesToPrefix Address, -- How long the sender should put money on hold (in milliseconds) sourceHoldDuration UInt32, -- Maximum time where the connector (and any connectors after it) expects to -- be able to honor this liquidity curve. Note that a quote in ILP is -- non-committal, meaning that the liquidity is only likely to be available, -- but not reserved and therefore not guaranteed. expiresAt GeneralizedTime,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

-- Quoting with a specified source amount to determine destination amount QuoteBySourceAmountRequestData ::= SEQUENCE { destinationAccount Address, sourceAmount UInt64, -- How much time the receiver needs to fulfill the payment (in milliseconds) destinationHoldDuration UInt32,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

QuoteBySourceAmountResponseData ::= SEQUENCE { -- Amount that will arrive at the receiver destinationAmount UInt64, -- How long the sender should put money on hold (in milliseconds) sourceHoldDuration UInt32,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

-- Quoting with a specified destination amount to determine source amount QuoteByDestinationAmountRequestData ::= SEQUENCE { destinationAccount Address, destinationAmount UInt64, -- How much time the receiver needs to fulfill the payment (in milliseconds) destinationHoldDuration UInt32,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

QuoteByDestinationAmountResponseData ::= SEQUENCE { -- Amount the sender needs to send based on the requested destination amount sourceAmount UInt64, -- How long the sender should put money on hold (in milliseconds) sourceHoldDuration UInt32,

-- Enable ASN.1 Extensibility
extensions SEQUENCE {
    ...
}

}

END