Skip to content

Commit ecc6fdc

Browse files
authored
Merge pull request #105 from tinymanorg/feat/order-client
feat(order): Create an ordering class for limit and recurring orders
2 parents e16bd60 + a537363 commit ecc6fdc

54 files changed

Lines changed: 1816 additions & 336 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

dist/governance/util/utils.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
export declare function intToBytes(num: number, length?: number): Uint8Array;
21
export declare function areBuffersEqual(buf1: Uint8Array, buf2: Uint8Array): boolean;
32
export declare function bytesToInt(buffer: Uint8Array): number;
43
export declare function sum(values: number[]): number;

dist/index.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ export type { InitiatorSigner, SignerTransaction, SupportedNetwork } from "./uti
33
export { BASE_MINIMUM_BALANCE, MINIMUM_ADD_LIQUIDITY_AMOUNT, MINIMUM_BALANCE_REQUIRED_PER_APP, MINIMUM_BALANCE_REQUIRED_PER_ASSET, MINIMUM_BALANCE_REQUIRED_PER_BYTE_SCHEMA, MINIMUM_BALANCE_REQUIRED_PER_INT_SCHEMA_VALUE } from "./util/constant";
44
export * from "./swap/v2/router";
55
export * from "./swap/common/utils";
6-
export { applySlippageToAmount, ASSET_OPT_IN_PROCESS_TXN_COUNT, convertFromBaseUnits, convertToBaseUnits, getTxnGroupID, sendAndWaitRawTransaction, sumUpTxnFees, joinByteArrays } from "./util/util";
6+
export { applySlippageToAmount, ASSET_OPT_IN_PROCESS_TXN_COUNT, convertFromBaseUnits, convertToBaseUnits, getTxnGroupID, sendAndWaitRawTransaction, sumUpTxnFees, joinByteArrays, intToBytes } from "./util/util";
77
export { generateOptIntoAssetTxns } from "./util/asset/assetUtils";
88
export type { AssetWithIdAndAmount, TinymanAnalyticsApiAsset } from "./util/asset/assetModels";
99
export { ALGO_ASSET, ALGO_ASSET_ID, POOL_TOKEN_UNIT_NAME } from "./util/asset/assetConstants";
@@ -48,7 +48,8 @@ export { TinymanTAlgoClient } from "./liquid-stake/tAlgoClient";
4848
export { ProposalVote } from "./governance/proposal-voting/constants";
4949
export { generateProposalMetadata } from "./governance/proposal-voting/transactions";
5050
export type { GenerateProposalMetadataPayload } from "./governance/proposal-voting/types";
51-
export { intToBytes } from "./governance/util/utils";
5251
export { AccountState } from "./governance/vault/storage";
5352
export { getStartTimestampOfWeek } from "./governance/vault/utils";
5453
export { calculateTinyPower, combineAndRegroupTxns, generateCidFromProposalMetadata } from "./governance/utils";
54+
export { OrderingClient } from "./order/index";
55+
export type { PutTriggerOrderParams, PutRecurringOrderParams, OrderType } from "./order/types";

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/liquid-stake/stAlgoClient.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import algosdk from "algosdk";
2-
import TinymanBaseClient from "../util/client/base/baseClient";
32
import { SupportedNetwork } from "../util/commonTypes";
4-
declare class TinymanSTAlgoClient extends TinymanBaseClient {
3+
import TinymanBaseClient from "../util/client/base/baseClient";
4+
declare class TinymanSTAlgoClient extends TinymanBaseClient<number, algosdk.Address> {
55
vaultAppId: number;
66
constructor(algod: algosdk.Algodv2, network: SupportedNetwork);
77
increaseStake(amount: bigint, userAddress: string): Promise<algosdk.Transaction[]>;

dist/liquid-stake/tAlgoClient.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import algosdk from "algosdk";
2-
import TinymanBaseClient from "../util/client/base/baseClient";
32
import { SupportedNetwork } from "../util/commonTypes";
4-
declare class TinymanTAlgoClient extends TinymanBaseClient {
3+
import TinymanBaseClient from "../util/client/base/baseClient";
4+
declare class TinymanTAlgoClient extends TinymanBaseClient<number, algosdk.Address> {
55
constructor(algod: algosdk.Algodv2, network: SupportedNetwork);
66
sync(userAddress: string): Promise<algosdk.Transaction[]>;
77
mint(amount: bigint, userAddress: string): Promise<algosdk.Transaction[]>;

dist/order/constants.d.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { StructDefinition } from "../util/client/base/types";
2+
import { SupportedNetwork } from "../util/commonTypes";
3+
import { OrderStruct } from "./types";
4+
declare const TOTAL_ORDER_COUNT_KEY: Uint8Array;
5+
declare const GOVERNOR_ORDER_FEE_RATE_KEY: Uint8Array;
6+
declare const GOVERNOR_FEE_RATE_POWER_THRESHOLD_KEY: Uint8Array;
7+
declare const ORDER_FEE_RATE_KEY: Uint8Array;
8+
declare const APP_LATEST_VERSION_KEY: Uint8Array;
9+
declare const APP_VERSION_KEY: Uint8Array;
10+
declare const ORDER_STRUCTS: Record<OrderStruct, StructDefinition>;
11+
declare const ORDER_APP_GLOBAL_SCHEMA: {
12+
numUint: number;
13+
numByteSlice: number;
14+
};
15+
declare const ORDER_APP_LOCAL_SCHEMA: {
16+
numUint: number;
17+
numByteSlice: number;
18+
};
19+
declare const ORDER_APP_EXTRA_PAGES = 3;
20+
declare const REGISTRY_APP_ID: Record<SupportedNetwork, number>;
21+
declare const VAULT_APP_ID: Record<SupportedNetwork, number>;
22+
declare const ROUTER_APP_ID: Record<SupportedNetwork, number>;
23+
declare const MINIMUM_BALANCE_REQUIREMENT_PER_APP = 100000;
24+
declare const MINIMUM_PUT_ORDER_TRANSACTION_COUNT = 5;
25+
declare const APPROVAL_PROGRAM = "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";
26+
declare const CLEAR_PROGRAM = "CoEBQw==";
27+
export { ORDER_APP_EXTRA_PAGES, ORDER_APP_GLOBAL_SCHEMA, ORDER_APP_LOCAL_SCHEMA, REGISTRY_APP_ID, ORDER_STRUCTS, TOTAL_ORDER_COUNT_KEY, VAULT_APP_ID, MINIMUM_BALANCE_REQUIREMENT_PER_APP, GOVERNOR_ORDER_FEE_RATE_KEY, GOVERNOR_FEE_RATE_POWER_THRESHOLD_KEY, ORDER_FEE_RATE_KEY, MINIMUM_PUT_ORDER_TRANSACTION_COUNT, APPROVAL_PROGRAM, CLEAR_PROGRAM, ROUTER_APP_ID, APP_LATEST_VERSION_KEY, APP_VERSION_KEY };

dist/order/index.d.ts

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
import algosdk, { Algodv2, Transaction } from "algosdk";
2+
import { OrderType, PutTriggerOrderParams, PutRecurringOrderParams } from "./types";
3+
import { SupportedNetwork } from "../util/commonTypes";
4+
import TinymanBaseClient from "../util/client/base/baseClient";
5+
declare class OrderingClient extends TinymanBaseClient<number | null, algosdk.Address | null> {
6+
registryAppId: number;
7+
registryApplicationAddress: string;
8+
vaultAppId: number;
9+
vaultApplicationAddress: string;
10+
routerAppId: number;
11+
routerApplicationAddress: string;
12+
userAddress: string;
13+
private constructor();
14+
private static getRegistryEntryBoxName;
15+
private static getOrderApplicationId;
16+
/**
17+
* Initializes the OrderingClient by fetching the personal app id from global state.
18+
* Until the user creates an application, the app id will be set as null
19+
*/
20+
static initializeOrderingClient(algod: Algodv2, network: SupportedNetwork, userAddress: string): Promise<OrderingClient>;
21+
/**
22+
* Compares the contracts between the user's order app and the latest available contract.
23+
*
24+
* @returns A boolean indicating if the order app needs to be updated.
25+
*/
26+
shouldUpdateOrderingApp(): Promise<boolean>;
27+
/**
28+
* Prepares transactions to update the ordering app using the latest contracts.
29+
* @returns A promise that resolves the transaction array.
30+
*/
31+
prepareUpdateOrderingAppTransactions(): Promise<Transaction[]>;
32+
calculateCreateOrderAppMinBalanceIncreaseAmount(): bigint;
33+
/**
34+
* Prepares transactions to create the order app for a user.
35+
* @param userAddress - The address of the user.
36+
* @returns A promise that resolves the transaction array.
37+
*/
38+
prepareCreateOrderAppTransactions(userAddress: string): Promise<algosdk.Transaction[]>;
39+
checkOrderAppAvailability(orderAppId?: number): Promise<void>;
40+
getPutTriggerOrderTransactionFee({ assetInId, assetOutId, type }: {
41+
assetInId: number;
42+
assetOutId: number;
43+
type: OrderType;
44+
}): Promise<bigint>;
45+
/**
46+
* Prepares an array of transactions to place a limit order.
47+
*
48+
* @param {PutTriggerOrderParams} params - The parameters for the put order operation.
49+
* @param params.assetInId - The ID of the input asset.
50+
* @param params.assetOutId - The ID of the output asset.
51+
* @param params.assetInAmount - The amount of the input asset in base units.
52+
* @param params.assetOutAmount - The amount of the output asset in base units.
53+
* @param params.isPartialAllowed - Whether partial fills are allowed.
54+
* @param params.duration - The duration of the order in seconds.
55+
* @param [params.orderAppId] - (Optional) The application ID for the order.
56+
* @returns A promise that resolves the transaction array.
57+
*/
58+
preparePutTriggerOrderTransactions({ assetInId, assetOutId, assetInAmount, assetOutAmount, isPartialAllowed, duration }: PutTriggerOrderParams): Promise<algosdk.Transaction[]>;
59+
/**
60+
* Prepares an array of transactions to place a recurring order.
61+
*
62+
* @param {PutRecurringOrderParams} params - The parameters for the recurring order.
63+
* @param params.amount - The amount per order to be used for the recurring order.
64+
* @param params.assetId - The ID of the asset being used for the order.
65+
* @param params.targetAssetId - The ID of the target asset for the order.
66+
* @param params.targetRecurrence - The number of times the order should recur.
67+
* @param params.interval - The interval between each recurrence in seconds.
68+
* @param params.maxTargetPrice - (Optional) The maximum price per unit of the target asset to be accepted.
69+
* @param params.minTargetPrice - (Optional) The minimum price per unit of the target asset to be accepted.
70+
* @returns A promise that resolves the transaction array.
71+
*/
72+
preparePutRecurringOrderTransactions({ amount, assetId, targetAssetId, targetRecurrence, interval, maxTargetPrice, minTargetPrice }: PutRecurringOrderParams): Promise<algosdk.Transaction[]>;
73+
/**
74+
* Prepares an array of transactions to cancel an order.
75+
*
76+
* @param orderId - The ID of the order to cancel.
77+
* @param type - The type of the order to cancel.
78+
* @returns A promise that resolves the transaction array.
79+
*/
80+
prepareCancelOrderTransactions(orderId: number, type: OrderType): Promise<algosdk.Transaction[]>;
81+
/**
82+
* Prepares an array of transactions to claim the collected target amount for an order.
83+
* @param orderId - The ID of the order for which to claim the collected target amount.
84+
* @param type - The type of the order (OrderType.Trigger or OrderType.Recurring).
85+
* @returns A promise that resolves the transaction array.
86+
*/
87+
prepareClaimCollectedTargetAmount(orderId: number, type: OrderType): Promise<algosdk.Transaction[]>;
88+
/**
89+
* Gets the platform fee rate based on the provided tiny power from the global state.
90+
*
91+
* @param tinyPower - The tiny power to check against the threshold.
92+
* @returns The platform fee rate.
93+
*/
94+
getPlatformFeeRate(tinyPower: number | null): Promise<bigint>;
95+
private getOrderCount;
96+
private getOrderBoxName;
97+
private getRegistryEntryBoxName;
98+
private prepareOrderAppAssetOptInTransaction;
99+
private prepareOrderAppAssetOptinTransactionsIfNeeded;
100+
private getAssetsToOptInToOrderingClient;
101+
private getLatestOrderAppVersion;
102+
private getAppVersionBoxName;
103+
}
104+
export { OrderingClient };

dist/order/types.d.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export interface PutTriggerOrderParams {
2+
assetInId: number;
3+
assetOutId: number;
4+
assetInAmount: bigint;
5+
assetOutAmount: bigint;
6+
isPartialAllowed: boolean;
7+
duration: number;
8+
orderAppId?: number;
9+
}
10+
export interface PutRecurringOrderParams {
11+
assetId: number;
12+
amount: bigint;
13+
targetAssetId: number;
14+
targetRecurrence: number;
15+
interval: number;
16+
minTargetPrice: number;
17+
maxTargetPrice: number;
18+
}
19+
export declare enum OrderType {
20+
Trigger = "trigger_order",
21+
Recurring = "recurring_order"
22+
}
23+
export declare enum OrderStruct {
24+
Trigger = "TriggerOrder",
25+
Recurring = "RecurringOrder",
26+
Entry = "Entry"
27+
}

dist/order/utils.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { joinByteArrays } from "../util/util";
2+
declare function createPaddedByteArray(elements: number[], length?: number, paddingValue?: number, byteSize?: number): Uint8Array;
3+
declare function computeSHA512(fileArrayBuffer: Uint8Array): Promise<string>;
4+
export { computeSHA512, createPaddedByteArray, joinByteArrays };
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { Algodv2 } from "algosdk";
2+
import { StructDefinition } from "./types";
3+
import TinymanBaseClient from "./baseClient";
4+
import { SupportedNetwork } from "../../commonTypes";
5+
/**
6+
* Abstract client for Tinyman applications that may not have an app ID initially
7+
* This class overrides the base non-nullable properties to allow null values
8+
*/
9+
declare abstract class TinymanNullableAppClient extends TinymanBaseClient {
10+
constructor(algod: Algodv2, appId: number | null, network: SupportedNetwork, structs?: Record<string, StructDefinition>);
11+
/**
12+
* Helper method to check if the app ID is available
13+
*/
14+
protected isAppIdAvailable(): boolean;
15+
/**
16+
* Helper method that throws an error if the app ID is not available
17+
*/
18+
protected requireAppId(): void;
19+
/**
20+
* Override getGlobal to add null check
21+
*/
22+
protected getGlobal(key: Uint8Array, defaultValue?: any, appId?: number): Promise<any>;
23+
/**
24+
* Override boxExists to add null check
25+
*/
26+
protected boxExists(boxName: Uint8Array, appId?: number): Promise<boolean>;
27+
/**
28+
* Override getBox to add null check
29+
*/
30+
protected getBox(boxName: Uint8Array, structName: string, appId?: number): Promise<import("./utils").Struct | null>;
31+
}
32+
export default TinymanNullableAppClient;

0 commit comments

Comments
 (0)