Deploying to gh-pages from @ blockworks-foundation/mango-v4@e83052a036 🚀
This commit is contained in:
parent
1d46444989
commit
a8db90f48b
|
@ -1 +1 @@
|
|||
{"rustc_fingerprint":2477091588561681078,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.69.0 (84c898d65 2023-04-16)\nbinary: rustc\ncommit-hash: 84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc\ncommit-date: 2023-04-16\nhost: x86_64-unknown-linux-gnu\nrelease: 1.69.0\nLLVM version: 15.0.7\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/runner/.rustup/toolchains/1.69-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
|
||||
{"rustc_fingerprint":8092119511546659274,"outputs":{"4614504638168534921":{"success":true,"status":"","code":0,"stdout":"rustc 1.69.0 (84c898d65 2023-04-16)\nbinary: rustc\ncommit-hash: 84c898d65adf2f39a5a98507f1fe0ce10a2b8dbc\ncommit-date: 2023-04-16\nhost: x86_64-unknown-linux-gnu\nrelease: 1.69.0\nLLVM version: 15.0.7\n","stderr":""},"15729799797837862367":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/runner/.rustup/toolchains/1.69-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -407,6 +407,58 @@
|
|||
<a href="#407" id="407">407</a>
|
||||
<a href="#408" id="408">408</a>
|
||||
<a href="#409" id="409">409</a>
|
||||
<a href="#410" id="410">410</a>
|
||||
<a href="#411" id="411">411</a>
|
||||
<a href="#412" id="412">412</a>
|
||||
<a href="#413" id="413">413</a>
|
||||
<a href="#414" id="414">414</a>
|
||||
<a href="#415" id="415">415</a>
|
||||
<a href="#416" id="416">416</a>
|
||||
<a href="#417" id="417">417</a>
|
||||
<a href="#418" id="418">418</a>
|
||||
<a href="#419" id="419">419</a>
|
||||
<a href="#420" id="420">420</a>
|
||||
<a href="#421" id="421">421</a>
|
||||
<a href="#422" id="422">422</a>
|
||||
<a href="#423" id="423">423</a>
|
||||
<a href="#424" id="424">424</a>
|
||||
<a href="#425" id="425">425</a>
|
||||
<a href="#426" id="426">426</a>
|
||||
<a href="#427" id="427">427</a>
|
||||
<a href="#428" id="428">428</a>
|
||||
<a href="#429" id="429">429</a>
|
||||
<a href="#430" id="430">430</a>
|
||||
<a href="#431" id="431">431</a>
|
||||
<a href="#432" id="432">432</a>
|
||||
<a href="#433" id="433">433</a>
|
||||
<a href="#434" id="434">434</a>
|
||||
<a href="#435" id="435">435</a>
|
||||
<a href="#436" id="436">436</a>
|
||||
<a href="#437" id="437">437</a>
|
||||
<a href="#438" id="438">438</a>
|
||||
<a href="#439" id="439">439</a>
|
||||
<a href="#440" id="440">440</a>
|
||||
<a href="#441" id="441">441</a>
|
||||
<a href="#442" id="442">442</a>
|
||||
<a href="#443" id="443">443</a>
|
||||
<a href="#444" id="444">444</a>
|
||||
<a href="#445" id="445">445</a>
|
||||
<a href="#446" id="446">446</a>
|
||||
<a href="#447" id="447">447</a>
|
||||
<a href="#448" id="448">448</a>
|
||||
<a href="#449" id="449">449</a>
|
||||
<a href="#450" id="450">450</a>
|
||||
<a href="#451" id="451">451</a>
|
||||
<a href="#452" id="452">452</a>
|
||||
<a href="#453" id="453">453</a>
|
||||
<a href="#454" id="454">454</a>
|
||||
<a href="#455" id="455">455</a>
|
||||
<a href="#456" id="456">456</a>
|
||||
<a href="#457" id="457">457</a>
|
||||
<a href="#458" id="458">458</a>
|
||||
<a href="#459" id="459">459</a>
|
||||
<a href="#460" id="460">460</a>
|
||||
<a href="#461" id="461">461</a>
|
||||
</pre><pre class="rust"><code><span class="kw">use </span>anchor_lang::prelude::<span class="kw-2">*</span>;
|
||||
<span class="kw">use </span>num_enum::{IntoPrimitive, TryFromPrimitive};
|
||||
<span class="kw">use </span>static_assertions::const_assert_eq;
|
||||
|
@ -589,6 +641,58 @@
|
|||
}
|
||||
<span class="prelude-val">None
|
||||
</span>}
|
||||
|
||||
<span class="doccomment">/// Walk up the book given base units and return the amount in quote lots an order would
|
||||
/// be filled at. If not enough liquidity is on book, return None
|
||||
</span><span class="kw">pub fn </span>matched_amount(
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
quantity: i64,
|
||||
now_ts: u64,
|
||||
oracle_price_lots: i64,
|
||||
) -> <span class="prelude-ty">Option</span><i64> {
|
||||
<span class="kw">if </span>quantity <= <span class="number">0 </span>{
|
||||
<span class="kw">return </span><span class="prelude-val">None</span>;
|
||||
}
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>sum_qty: i64 = <span class="number">0</span>;
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>sum_amt: i64 = <span class="number">0</span>;
|
||||
<span class="kw">for </span>order <span class="kw">in </span><span class="self">self</span>.iter_valid(now_ts, oracle_price_lots) {
|
||||
sum_qty += order.node.quantity;
|
||||
sum_amt += order.node.quantity * order.price_lots;
|
||||
<span class="kw">let </span>extra_qty = sum_qty - quantity;
|
||||
<span class="kw">if </span>extra_qty >= <span class="number">0 </span>{
|
||||
sum_amt -= extra_qty * order.price_lots;
|
||||
<span class="kw">return </span><span class="prelude-val">Some</span>(sum_amt);
|
||||
}
|
||||
}
|
||||
<span class="prelude-val">None
|
||||
</span>}
|
||||
|
||||
<span class="doccomment">/// Walk up the book given quote units and return the quantity in base lots
|
||||
/// an order would need to request to match at least the requested amount.
|
||||
/// If not enough liquidity is on book, return None
|
||||
</span><span class="kw">pub fn </span>matched_quantity(
|
||||
<span class="kw-2">&</span><span class="self">self</span>,
|
||||
amount: i64,
|
||||
now_ts: u64,
|
||||
oracle_price_lots: i64,
|
||||
) -> <span class="prelude-ty">Option</span><i64> {
|
||||
<span class="kw">if </span>amount <= <span class="number">0 </span>{
|
||||
<span class="kw">return </span><span class="prelude-val">None</span>;
|
||||
}
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>sum_qty: i64 = <span class="number">0</span>;
|
||||
<span class="kw">let </span><span class="kw-2">mut </span>sum_amt: i64 = <span class="number">0</span>;
|
||||
<span class="kw">for </span>order <span class="kw">in </span><span class="self">self</span>.iter_valid(now_ts, oracle_price_lots) {
|
||||
sum_qty += order.node.quantity;
|
||||
sum_amt += order.node.quantity * order.price_lots;
|
||||
<span class="kw">let </span>extra_amt = sum_amt - amount;
|
||||
<span class="kw">if </span>extra_amt >= <span class="number">0 </span>{
|
||||
<span class="comment">// adding n-1 before dividing through n to force rounding up
|
||||
</span>sum_qty -= (extra_amt + order.price_lots - <span class="number">1</span>) / order.price_lots;
|
||||
<span class="kw">return </span><span class="prelude-val">Some</span>(sum_qty);
|
||||
}
|
||||
}
|
||||
<span class="prelude-val">None
|
||||
</span>}
|
||||
}
|
||||
|
||||
<span class="attr">#[cfg(test)]
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue