Skip to content

Commit

Permalink
New Superfluid Endpoints (#142)
Browse files Browse the repository at this point in the history
* added superfluid endpoints
  • Loading branch information
vignesha22 authored Jul 14, 2022
1 parent 7367f00 commit 3a35705
Show file tree
Hide file tree
Showing 14 changed files with 353 additions and 11 deletions.
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": "etherspot",
"version": "1.34.1",
"version": "1.34.2",
"description": "Etherspot SDK",
"keywords": [
"ether",
Expand Down
3 changes: 3 additions & 0 deletions src/sdk/dto/create-stream-payload.dto.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,7 @@ export class CreateStreamTransactionPayloadDto {
@IsBigNumberish()
amount: BigNumber;

@IsOptional()
userData?: string;

}
18 changes: 18 additions & 0 deletions src/sdk/dto/delete-stream-payload.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { IsOptional } from 'class-validator';
import { IsAddress } from './validators';

export class DeleteStreamTransactionPayloadDto {
@IsOptional()
@IsAddress()
account?: string = null;

@IsAddress()
receiver: string;

@IsAddress()
tokenAddress: string;

@IsOptional()
userData?: string = null;

}
8 changes: 8 additions & 0 deletions src/sdk/dto/get-stream-list.dto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { IsOptional } from 'class-validator';
import { IsAddress } from './validators';

export class GetStreamListDto {
@IsOptional()
@IsAddress()
account?: string;
}
2 changes: 2 additions & 0 deletions src/sdk/dto/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,5 @@ export * from './utils';
export * from './withdraw-p2p-payment-deposit.dto';
export * from './get-exchange-cross-chain-quote.dto';
export * from './create-stream-payload.dto';
export * from './delete-stream-payload.dto';
export * from './get-stream-list.dto';
79 changes: 76 additions & 3 deletions src/sdk/sdk.ts
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ import {
GetCrossChainBridgeTokenListDto,
GetP2PPaymentChannelsAdminDto,
CreateStreamTransactionPayloadDto,
DeleteStreamTransactionPayloadDto,
GetStreamListDto,
} from './dto';
import { ENSNode, ENSNodeStates, ENSRootNode, ENSService, parseENSName } from './ens';
import { Env, EnvNames } from './env';
Expand Down Expand Up @@ -146,7 +148,7 @@ import {
} from './payments';
import { CurrentProject, Project, Projects, ProjectService } from './project';
import { Session, SessionService } from './session';
import { Transactions, Transaction, TransactionsService, NftList, StreamTransactionPayload } from './transactions';
import { Transactions, Transaction, TransactionsService, NftList, StreamTransactionPayload, StreamList } from './transactions';
import { State, StateService } from './state';
import { WalletService, isWalletProvider, WalletProviderLike } from './wallet';

Expand Down Expand Up @@ -2132,7 +2134,7 @@ export class Sdk {
*/

async createStreamTransactionPayload(dto: CreateStreamTransactionPayloadDto): Promise<StreamTransactionPayload> {
const { tokenAddress, receiver, amount, account } = await validateDto(
const { tokenAddress, receiver, amount, account, userData } = await validateDto(
dto,
CreateStreamTransactionPayloadDto,
{
Expand All @@ -2150,7 +2152,78 @@ export class Sdk {
this.prepareAccountAddress(account),
receiver,
BigNumber.from(amount),
tokenAddress
tokenAddress,
userData ? userData : "0x",
);

}

async deleteStreamTransactionPayload(dto: DeleteStreamTransactionPayloadDto): Promise<StreamTransactionPayload> {
const { tokenAddress, receiver, account, userData } = await validateDto(
dto,
DeleteStreamTransactionPayloadDto,
{
addressKeys: ['tokenAddress', 'receiver', 'account'],
},
);

await this.require({
session: true,
wallet: !account,
contractAccount: true,
});

return this.services.transactionsService.deleteStreamTransactionPayload(
this.prepareAccountAddress(account),
receiver,
tokenAddress,
userData,
);

}

async modifyStreamTransactionPayload(dto: CreateStreamTransactionPayloadDto): Promise<StreamTransactionPayload> {
const { tokenAddress, receiver, amount, account, userData } = await validateDto(
dto,
CreateStreamTransactionPayloadDto,
{
addressKeys: ['tokenAddress', 'receiver', 'account'],
},
);

await this.require({
session: true,
wallet: !account,
contractAccount: true,
});

return this.services.transactionsService.modifyStreamTransactionPayload(
this.prepareAccountAddress(account),
receiver,
BigNumber.from(amount),
tokenAddress,
userData
);

}

async getStreamList(dto: GetStreamListDto = {}): Promise<StreamList> {
const { account } = await validateDto(
dto,
GetStreamListDto,
{
addressKeys: ['account'],
},
);

await this.require({
session: true,
wallet: !account,
contractAccount: true,
});

return this.services.transactionsService.getStreamList(
this.prepareAccountAddress(account),
);

}
Expand Down
1 change: 1 addition & 0 deletions src/sdk/transactions/classes/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@ export * from './transaction-log';
export * from './transaction-log-decoded';
export * from './transactions';
export * from './stream-transaction-payload';
export * from './streamList';
10 changes: 10 additions & 0 deletions src/sdk/transactions/classes/streamList.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Type } from 'class-transformer';
import { BaseClass } from '../../common';
import { StreamInfo } from './superfluids';

export class StreamList extends BaseClass<StreamList> {
@Type(() => StreamInfo)
items: StreamInfo[];

error: string;
}
3 changes: 3 additions & 0 deletions src/sdk/transactions/classes/superfluids/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './stream-event-data';
export * from './stream-info';
export * from './stream-token-data';
37 changes: 37 additions & 0 deletions src/sdk/transactions/classes/superfluids/stream-event-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import { BaseClass, TransformBigNumber } from '../../../common';
import { BigNumber } from 'ethers';

export class StreamEventData extends BaseClass<StreamEventData> {
id: string;

blockNumber: number;

timestamp: number;

transactionHash: string;

token: string;

sender: string;

receiver: boolean;

@TransformBigNumber()
flowRate: BigNumber;

@TransformBigNumber()
totalSenderFlowRate: BigNumber;

@TransformBigNumber()
totalReceiverFlowRate: BigNumber;

userData: string;

@TransformBigNumber()
oldFlowRate: BigNumber;

type: number;

@TransformBigNumber()
totalAmountStreamedUntilTimestamp: BigNumber;
}
32 changes: 32 additions & 0 deletions src/sdk/transactions/classes/superfluids/stream-info.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { BaseClass, TransformBigNumber } from '../../../common';
import { Type } from 'class-transformer';
import { BigNumber } from 'ethers';
import { StreamEventData } from './stream-event-data';
import { StreamTokenData } from './stream-token-data';

export class StreamInfo extends BaseClass<StreamInfo> {
id: string;

@TransformBigNumber()
currentFlowRate: BigNumber;

createdAtTimestamp: number;

createdAtBlockNumber: number;

updatedAtTimestamp: number;

updatedAtBlockNumber: number;

@TransformBigNumber()
streamedUntilUpdatedAt: BigNumber;

token: StreamTokenData;

sender: string;

receiver: string;

@Type(() => StreamEventData)
flowUpdatedEvents: StreamEventData[];
}
17 changes: 17 additions & 0 deletions src/sdk/transactions/classes/superfluids/stream-token-data.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { BaseClass } from '../../../common';

export class StreamTokenData extends BaseClass<StreamTokenData> {
id: string;

createdAtTimestamp: number;

createdAtBlockNumber: number;

name: string;

symbol: string;

isListed: boolean;

underlyingAddress: string;
}
Loading

0 comments on commit 3a35705

Please sign in to comment.