Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@waves/ts-types",
"version": "1.0.6-beta.7",
"version": "1.0.7",
"main": "dist/src/index.js",
"types": "dist/src/index.d.ts",
"scripts": {
Expand Down
64 changes: 64 additions & 0 deletions src/common.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
export type ExchangeTransactionOrderType = 'buy' | 'sell';
export type Base64Script = string;
export type Base58Bytes = string;
export type Proofs = Array<string>;
export type Long = string | number;
export type AssetDecimals = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
export type Base64string = string;

export const GENESIS_TYPE = 1 as 1;
export const PAYMENT_TYPE = 2 as 2;
export const ISSUE_TYPE = 3 as 3;
export const TRANSFER_TYPE = 4 as 4;
export const REISSUE_TYPE = 5 as 5;
export const BURN_TYPE = 6 as 6;
export const EXCHANGE_TYPE = 7 as 7;
export const LEASE_TYPE = 8 as 8;
export const CANCEL_LEASE_TYPE = 9 as 9;
export const ALIAS_TYPE = 10 as 10;
export const MASS_TRANSFER_TYPE = 11 as 11;
export const DATA_TYPE = 12 as 12;
export const SET_SCRIPT_TYPE = 13 as 13;
export const SPONSORSHIP_TYPE = 14 as 14;
export const SET_ASSET_SCRIPT_TYPE = 15 as 15;
export const INVOKE_SCRIPT_TYPE = 16 as 16;
export const UPDATE_ASSET_INFO_TYPE = 17 as 17;
export const INVOKE_EXPRESSION_TYPE = 18 as 18;
export const ETHEREUM = 19 as 19;

export const INTEGER_DATA_TYPE = 'integer' as 'integer';
export const BOOLEAN_DATA_TYPE = 'boolean' as 'boolean';
export const STRING_DATA_TYPE = 'string' as 'string';
export const BINARY_DATA_TYPE = 'binary' as 'binary';

export const TRANSACTION_TYPE = {
GENESIS: GENESIS_TYPE,
PAYMENT: PAYMENT_TYPE,
ISSUE: ISSUE_TYPE,
TRANSFER: TRANSFER_TYPE,
REISSUE: REISSUE_TYPE,
BURN: BURN_TYPE,
EXCHANGE: EXCHANGE_TYPE,
LEASE: LEASE_TYPE,
CANCEL_LEASE: CANCEL_LEASE_TYPE,
ALIAS: ALIAS_TYPE,
MASS_TRANSFER: MASS_TRANSFER_TYPE,
DATA: DATA_TYPE,
SET_SCRIPT: SET_SCRIPT_TYPE,
SPONSORSHIP: SPONSORSHIP_TYPE,
SET_ASSET_SCRIPT: SET_ASSET_SCRIPT_TYPE,
INVOKE_SCRIPT: INVOKE_SCRIPT_TYPE,
UPDATE_ASSET_INFO: UPDATE_ASSET_INFO_TYPE,
INVOKE_EXPRESSION: INVOKE_EXPRESSION_TYPE,
ETHEREUM: ETHEREUM,
};

export const DATA_FIELD_TYPE = {
INTEGER: INTEGER_DATA_TYPE,
BOOLEAN: BOOLEAN_DATA_TYPE,
STRING: STRING_DATA_TYPE,
BINARY: BINARY_DATA_TYPE,
};

export type TransactionType = typeof TRANSACTION_TYPE[keyof typeof TRANSACTION_TYPE];
export type DataFiledType = typeof DATA_FIELD_TYPE[keyof typeof DATA_FIELD_TYPE];
74 changes: 74 additions & 0 deletions src/exchange.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
import { ExchangeTransaction } from './index';
import { ExchangeTransactionOrderType, Long } from './common';

export type ExchangeTransactionOrderData<LONG> = {
version: number;
orderType: ExchangeTransactionOrderType;
assetPair: {
amountAsset: string | null;
priceAsset: string | null;
};
price: LONG;
amount: LONG;
timestamp: number;
expiration: number;
matcherFee: LONG;
matcherPublicKey: string;
senderPublicKey: string;
};

export type WithVersion<
Target extends Record<string, any>,
Version extends number
> = Target & {
version: Version;
};

type ExchangeOrderWithCustomFee<Long> = ExchangeTransactionOrderData<Long> & {
matcherFeeAssetId: string | null;
};

export type ExchangeTransactionOrderV1<LONG = Long> = WithVersion<
ExchangeTransactionOrderData<LONG>,
1
>;
export type ExchangeTransactionOrderV2<LONG = Long> = WithVersion<
ExchangeTransactionOrderData<LONG>,
2
>;
export type ExchangeTransactionOrderV3<LONG = Long> = WithVersion<
ExchangeOrderWithCustomFee<LONG>,
3
>;
export type ExchangeTransactionOrderV4<LONG = Long> = WithVersion<
ExchangeOrderWithCustomFee<LONG>,
4
>;

export type ExchangeTransactionOrder<LONG = Long> =
| ExchangeTransactionOrderV1<LONG>
| ExchangeTransactionOrderV2<LONG>
| ExchangeTransactionOrderV3<LONG>
| ExchangeTransactionOrderV4<LONG>;

export type SignedIExchangeTransactionOrder<
ORDER extends ExchangeTransactionOrder<any>
> = ORDER &
(ORDER extends { version: 1 }
? { signature: string }
: { proofs: Array<string> });

export type ExchangeTransactionOrderMap<LONG = Long> = {
1: ExchangeTransactionOrderV1<LONG>;
2: ExchangeTransactionOrderV2<LONG>;
3: ExchangeTransactionOrderV3<LONG>;
4: ExchangeTransactionOrderV4<LONG>;
};

export type ExchangeTransactionOrderByTx<
TX extends ExchangeTransaction
> = TX extends { version: 1 }
? ExchangeTransactionOrderMap[1]
: TX extends { version: 2 }
? ExchangeTransactionOrderMap[1 | 2 | 3]
: ExchangeTransactionOrder;
60 changes: 4 additions & 56 deletions src/index.ts
Original file line number Diff line number Diff line change
@@ -1,59 +1,7 @@
export * from '../transactions';
export * from './common';
export * from './parts';
export * from './network';

export const GENESIS_TYPE = 1 as 1;
export const PAYMENT_TYPE = 2 as 2;
export const ISSUE_TYPE = 3 as 3;
export const TRANSFER_TYPE = 4 as 4;
export const REISSUE_TYPE = 5 as 5;
export const BURN_TYPE = 6 as 6;
export const EXCHANGE_TYPE = 7 as 7;
export const LEASE_TYPE = 8 as 8;
export const CANCEL_LEASE_TYPE = 9 as 9;
export const ALIAS_TYPE = 10 as 10;
export const MASS_TRANSFER_TYPE = 11 as 11;
export const DATA_TYPE = 12 as 12;
export const SET_SCRIPT_TYPE = 13 as 13;
export const SPONSORSHIP_TYPE = 14 as 14;
export const SET_ASSET_SCRIPT_TYPE = 15 as 15;
export const INVOKE_SCRIPT_TYPE = 16 as 16;
export const UPDATE_ASSET_INFO_TYPE = 17 as 17;
export const INVOKE_EXPRESSION_TYPE = 18 as 18;
export const ETHEREUM = 19 as 19;

export const INTEGER_DATA_TYPE = 'integer' as 'integer';
export const BOOLEAN_DATA_TYPE = 'boolean' as 'boolean';
export const STRING_DATA_TYPE = 'string' as 'string';
export const BINARY_DATA_TYPE = 'binary' as 'binary';

export const TRANSACTION_TYPE = {
GENESIS: GENESIS_TYPE,
PAYMENT: PAYMENT_TYPE,
ISSUE: ISSUE_TYPE,
TRANSFER: TRANSFER_TYPE,
REISSUE: REISSUE_TYPE,
BURN: BURN_TYPE,
EXCHANGE: EXCHANGE_TYPE,
LEASE: LEASE_TYPE,
CANCEL_LEASE: CANCEL_LEASE_TYPE,
ALIAS: ALIAS_TYPE,
MASS_TRANSFER: MASS_TRANSFER_TYPE,
DATA: DATA_TYPE,
SET_SCRIPT: SET_SCRIPT_TYPE,
SPONSORSHIP: SPONSORSHIP_TYPE,
SET_ASSET_SCRIPT: SET_ASSET_SCRIPT_TYPE,
INVOKE_SCRIPT: INVOKE_SCRIPT_TYPE,
UPDATE_ASSET_INFO: UPDATE_ASSET_INFO_TYPE,
INVOKE_EXPRESSION: INVOKE_EXPRESSION_TYPE,
ETHEREUM: ETHEREUM,
};

export const DATA_FIELD_TYPE = {
INTEGER: INTEGER_DATA_TYPE,
BOOLEAN: BOOLEAN_DATA_TYPE,
STRING: STRING_DATA_TYPE,
BINARY: BINARY_DATA_TYPE,
};

export type TransactionType = typeof TRANSACTION_TYPE[keyof typeof TRANSACTION_TYPE];
export type DataFiledType = typeof DATA_FIELD_TYPE[keyof typeof DATA_FIELD_TYPE];
export * from './exchange';
export * from './invoke';
63 changes: 63 additions & 0 deletions src/invoke.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
import { Base64string, Long } from './common';

export type InvokeScriptCall<LONG = Long> = {
function: string;
args: Array<InvokeScriptCallArgument<LONG>>;
};

export type InvokeScriptPayment<LONG = Long> = {
assetId: string | null;
amount: LONG;
};

export type InvokeScriptCallArgument<LONG = Long> =
| InvokeScriptCallStringArgument
| InvokeScriptCallBinaryArgument
| InvokeScriptCallBooleanArgument
| InvokeScriptCallIntegerArgument<LONG>
| InvokeScriptCallUnionArgument<LONG>
| InvokeScriptCallListArgument<
LONG,
| InvokeScriptCallStringArgument
| InvokeScriptCallBinaryArgument
| InvokeScriptCallBooleanArgument
| InvokeScriptCallIntegerArgument<LONG>
>;

export type InvokeScriptCallArgumentGeneric<Type, Value> = {
type: Type;
value: Value;
};

export type InvokeScriptCallStringArgument = InvokeScriptCallArgumentGeneric<
'string',
string
>;
export type InvokeScriptCallBinaryArgument = InvokeScriptCallArgumentGeneric<
'binary',
Base64string
>;
export type InvokeScriptCallBooleanArgument = InvokeScriptCallArgumentGeneric<
'boolean',
boolean
>;
export type InvokeScriptCallIntegerArgument<
LONG = Long
> = InvokeScriptCallArgumentGeneric<'integer', LONG>;
export type InvokeScriptCallUnionArgument<
LONG = Long
> = InvokeScriptCallArgumentGeneric<
'union',
LONG | string | Base64string | boolean
> & {
valueType: 'binary' | 'boolean' | 'integer' | 'string';
};
export type InvokeScriptCallListArgument<
LONG,
ITEMS extends
| InvokeScriptCallStringArgument
| InvokeScriptCallBinaryArgument
| InvokeScriptCallBooleanArgument
| InvokeScriptCallIntegerArgument<LONG>
| InvokeScriptCallUnionArgument<LONG>
> = InvokeScriptCallArgumentGeneric<'list', Array<ITEMS>>;
6 changes: 6 additions & 0 deletions src/network.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
export enum ChainId {
MAINNET = 87,
STAGENET = 83,
TESTNET = 84,
PRIVATE = 80,
}
Loading