Skip to content

Commit

Permalink
Merge pull request #438 from tiagosiebler/autoinvest
Browse files Browse the repository at this point in the history
v2.12.2: fix() auto invest endpoints params error
  • Loading branch information
tiagosiebler authored Aug 8, 2024
2 parents f4a79ca + 5465fdb commit 50129e1
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 16 deletions.
57 changes: 57 additions & 0 deletions examples/rest-spot-private-autoinvest.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
import { MainClient } from '../src/index';

// or
// import { MainClient } from 'binance';

const key = process.env.API_KEY_COM || 'APIKEY';
const secret = process.env.API_SECRET_COM || 'APISECRET';

const client = new MainClient({
api_key: key,
api_secret: secret,
beautifyResponses: true,
});

(async () => {
try {
const oneTimeTransactionResult =
await client.submitAutoInvestOneTimeTransaction({
sourceType: 'MAIN_SITE',
subscriptionAmount: 100,
sourceAsset: 'USDT',
details: [
{
targetAsset: 'BTC',
percentage: 60,
},
{
targetAsset: 'ETH',
percentage: 40,
},
],
});

console.log('oneTimeTransactionResult', oneTimeTransactionResult);

const autoInvestPlanResult = await client.submitAutoInvestmentPlan({
UID: '20983262a',
sourceType: 'MAIN_SITE',
subscriptionAmount: 100,
sourceAsset: 'USDT',
planType: 'SINGLE',
flexibleAllowedToUse: true,
subscriptionCycle: 'DAILY',
subscriptionStartTime: 5,
details: [
{
targetAsset: 'BTC',
percentage: 100,
},
],
});

console.log('autoInvestPlanResult', autoInvestPlanResult);
} catch (e) {
console.error('request failed: ', e);
}
})();
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "binance",
"version": "2.12.1",
"version": "2.12.2",
"description": "Node.js & JavaScript SDK for Binance REST APIs & WebSockets, with TypeScript & end-to-end tests.",
"main": "lib/index.js",
"types": "lib/index.d.ts",
Expand Down
50 changes: 49 additions & 1 deletion src/main-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2146,12 +2146,44 @@ export class MainClient extends BaseRestClient {

submitAutoInvestmentPlan(
params: CreateInvestmentPlanParams,
): Promise<CreateInvestmentPlanResponse> {
const { details, ...allParams } = params;
const requestParameters = { ...allParams };
for (let i = 0; i < details.length; i++) {
requestParameters[`details[${i}].targetAsset`] = details[i].targetAsset;
requestParameters[`details[${i}].percentage`] = details[i].percentage;
}
return this.postPrivate(
'sapi/v1/lending/auto-invest/plan/add',
requestParameters,
);
}

submitAutoInvestmentPlanOld(
params: CreateInvestmentPlanParams,
): Promise<CreateInvestmentPlanResponse> {
return this.postPrivate('sapi/v1/lending/auto-invest/plan/add', params);
}

updateAutoInvestmentPlan(
params: EditInvestmentPlanParams,
): Promise<EditInvestmentPlanResponse> {
const { details, ...allParams } = params;

const requestParameters = { ...allParams };
for (let i = 0; i < details.length; i++) {
requestParameters[`details[${i}].targetAsset`] = details[i].targetAsset;
requestParameters[`details[${i}].percentage`] = details[i].percentage;
}

return this.postPrivate(
'sapi/v1/lending/auto-invest/plan/edit',
requestParameters,
);
}

updateAutoInvestmentPlanOld(
params: EditInvestmentPlanParams,
): Promise<EditInvestmentPlanResponse> {
return this.postPrivate('sapi/v1/lending/auto-invest/plan/edit', params);
}
Expand Down Expand Up @@ -2196,10 +2228,26 @@ export class MainClient extends BaseRestClient {
);
}

/**
* https://developers.binance.com/docs/auto_invest/trade/One-Time-Transaction
*
* @param params
* @returns
*/
submitAutoInvestOneTimeTransaction(
params: SubmitOneTimeTransactionParams,
): Promise<SubmitOneTimeTransactionResponse> {
return this.postPrivate('sapi/v1/lending/auto-invest/one-off', params);
const { details, ...allParams } = params;
const requestParameters = { ...allParams };
for (let i = 0; i < details.length; i++) {
requestParameters[`details[${i}].targetAsset`] = details[i].targetAsset;
requestParameters[`details[${i}].percentage`] = details[i].percentage;
}

return this.postPrivate(
'sapi/v1/lending/auto-invest/one-off',
requestParameters,
);
}

getOneTimeTransactionStatus(
Expand Down
22 changes: 10 additions & 12 deletions src/types/spot.ts
Original file line number Diff line number Diff line change
Expand Up @@ -634,12 +634,12 @@ export type OrderResponseTypeFor<
> = RT extends 'ACK'
? OrderResponseACK
: RT extends 'RESULT'
? OrderResponseResult
: RT extends 'FULL'
? OrderResponseFull
: T extends 'MARKET' | 'LIMIT'
? OrderResponseFull
: OrderResponseACK;
? OrderResponseResult
: RT extends 'FULL'
? OrderResponseFull
: T extends 'MARKET' | 'LIMIT'
? OrderResponseFull
: OrderResponseACK;

export interface OrderResponseACK {
symbol: string;
Expand Down Expand Up @@ -3132,6 +3132,7 @@ export interface AutoInvestPortfolioDetail {
}

export interface CreateInvestmentPlanParams {
UID: string;
sourceType: 'MAIN_SITE' | 'TR';
requestId?: string;
planType: 'SINGLE' | 'PORTFOLIO' | 'INDEX';
Expand All @@ -3157,7 +3158,7 @@ export interface CreateInvestmentPlanParams {
| 'SUN';
subscriptionStartTime: number;
sourceAsset: string;
flexibleAllowedToUse?: boolean;
flexibleAllowedToUse: boolean;
details: AutoInvestPortfolioDetail[];
}

Expand Down Expand Up @@ -3263,15 +3264,12 @@ export interface GetIndexLinkedPlanPositionDetailsResponse {
export interface SubmitOneTimeTransactionParams {
sourceType: 'MAIN_SITE' | 'TR';
requestId?: string;
subscriptionAmount: string;
subscriptionAmount: number;
sourceAsset: string;
flexibleAllowedToUse?: boolean;
planId?: number;
indexId?: number;
details: {
targetAsset: string;
percentage: number;
}[];
details: AutoInvestPortfolioDetail[];
}

export interface SubmitOneTimeTransactionResponse {
Expand Down

0 comments on commit 50129e1

Please sign in to comment.