diff --git a/types/dispatchr/addons/BaseStore.d.ts b/types/dispatchr/addons/BaseStore.d.ts
new file mode 100644
index 0000000000..6507a7fcf4
--- /dev/null
+++ b/types/dispatchr/addons/BaseStore.d.ts
@@ -0,0 +1,16 @@
+///
+
+import { Dispatcher, DispatcherInterface, DispatcherContext, Store } from '../index';
+import { EventEmitter } from 'events';
+
+declare class BaseStore extends EventEmitter implements Store {
+ constructor(dispatcher: DispatcherInterface);
+ initialize?(): void;
+ getContext(): DispatcherContext;
+ addChangeListener(callback: () => void): void;
+ removeChangeListener(callback: () => void): void;
+ shouldDehydrate(): boolean;
+ emitChange(): void;
+}
+
+export = BaseStore;
diff --git a/types/dispatchr/addons/createStore.d.ts b/types/dispatchr/addons/createStore.d.ts
new file mode 100644
index 0000000000..86a1f24fbb
--- /dev/null
+++ b/types/dispatchr/addons/createStore.d.ts
@@ -0,0 +1,20 @@
+import { StoreClass, Store } from '../index';
+
+type Diff = ({ [P in T]: P } & { [P in U]: never } & { [x: string]: never })[T];
+type Omit = Pick>;
+
+interface StoreOptions {
+ storeName: string;
+ handlers: { [event: string]: string };
+ statics?: { [prop: string]: any };
+ mixins?: object[];
+ initialize?(): void;
+ dehydrate?(): any;
+ rehydrate?(state: any): void;
+}
+
+// see: https://github.com/yahoo/fluxible/blob/dispatchr-v1.2.0/packages/dispatchr/addons/createStore.js#L9
+type StoreThis = Omit & Store;
+
+declare function createStore(options: T & ThisType>): StoreClass;
+export = createStore;
diff --git a/types/dispatchr/dispatchr-tests.ts b/types/dispatchr/dispatchr-tests.ts
new file mode 100644
index 0000000000..fcf0490f44
--- /dev/null
+++ b/types/dispatchr/dispatchr-tests.ts
@@ -0,0 +1,46 @@
+import { createDispatcher, Store } from 'dispatchr';
+import createStore = require('dispatchr/addons/createStore');
+import BaseStore = require('dispatchr/addons/BaseStore');
+
+const TestStore = createStore({
+ storeName: 'TestStore',
+
+ handlers: {
+ ACTION_NAME: 'actionHandler'
+ },
+
+ statics: {
+ staticMethod() {}
+ },
+
+ initialize() { },
+
+ actionHandler() {
+ this.emitChange();
+ this.additionalMethod();
+ },
+
+ additionalMethod() {}
+});
+
+class ExtendedStore extends BaseStore {
+ static handlers = {
+ ACTION_NAME: 'actionHandler'
+ };
+
+ actionHandler() {
+ this.emitChange();
+ }
+}
+
+const dispatcher = createDispatcher({
+ errorHandler(e, context) {
+ e.meta;
+ e.type;
+ e.message;
+ },
+ stores: [TestStore]
+});
+
+const context = dispatcher.createContext({});
+context.dispatch('ACTION_NAME', {});
diff --git a/types/dispatchr/index.d.ts b/types/dispatchr/index.d.ts
new file mode 100644
index 0000000000..b5cf63009d
--- /dev/null
+++ b/types/dispatchr/index.d.ts
@@ -0,0 +1,66 @@
+// Type definitions for dispatchr 1.2
+// Project: https://github.com/yahoo/fluxible#readme
+// Definitions by: Ragg
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+// TypeScript Version: 2.5
+///
+import { EventEmitter } from 'events';
+
+export interface DispatcherState {
+ stores: { [storeName: string]: any };
+}
+
+export interface DispatcherOption {
+ stores?: StoreClass[];
+ errorHandler?: (e: DispatcherError, context: DispatcherContext) => void;
+}
+
+export interface StoreClass {
+ storeName: string;
+ new(): Store;
+}
+
+export interface Store extends EventEmitter {
+ dehydrate?(): S;
+ rehydrate?(state: S): void;
+ shouldDehydrate?(): boolean;
+ emitChange(): void;
+}
+
+export interface Dispatcher {
+ createContext(context: object): DispatcherContext;
+ registerStore(store: StoreClass): void;
+ isRegistered(store: StoreClass | string): boolean;
+ getStoreName(store: StoreClass | string): string;
+}
+
+export interface DispatcherInterface {
+ getContext(): DispatcherContext;
+ getStore: DispatcherContext['getStore'];
+ waitFor: DispatcherContext['waitFor'];
+}
+
+export interface DispatcherContext {
+ getStore(name: string): Store;
+ getStore(name: T): T;
+
+ dispatch(actionName: string, payload: any): void;
+
+ dehydrate(): DispatcherState;
+ rehydrate(dispatcherState: DispatcherState): void;
+
+ waitFor(stores: ReadonlyArray, callback: () => void): void;
+ dispatcherInterface: DispatcherInterface;
+}
+
+export interface DispatcherError {
+ message: string;
+ type: string;
+ meta: {
+ actionName?: string,
+ payload?: any,
+ error: Error
+ };
+}
+
+export function createDispatcher(options: DispatcherOption): Dispatcher;
diff --git a/types/dispatchr/tsconfig.json b/types/dispatchr/tsconfig.json
new file mode 100644
index 0000000000..e94ec73c3c
--- /dev/null
+++ b/types/dispatchr/tsconfig.json
@@ -0,0 +1,26 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "esModuleInterop": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "addons/createStore.d.ts",
+ "addons/BaseStore.d.ts",
+ "dispatchr-tests.ts"
+ ]
+}
diff --git a/types/dispatchr/tslint.json b/types/dispatchr/tslint.json
new file mode 100644
index 0000000000..3db14f85ea
--- /dev/null
+++ b/types/dispatchr/tslint.json
@@ -0,0 +1 @@
+{ "extends": "dtslint/dt.json" }
diff --git a/types/iban/iban-tests.ts b/types/iban/iban-tests.ts
index ac79e97a99..574769c461 100644
--- a/types/iban/iban-tests.ts
+++ b/types/iban/iban-tests.ts
@@ -39,7 +39,7 @@ function testIsValidBBAN() {
*/
function testPrintFormat() {
var iban: string = 'BE68539007547034';
- var separator: string[] = ['fr'];
+ var separator: string = ' ';
var format: string = IBAN.printFormat(iban, separator);
}
@@ -48,6 +48,6 @@ function testPrintFormat() {
*/
function testToBBAN() {
var iban: string = 'BE68539007547034';
- var separator: string[] = ['-'];
+ var separator: string = '-';
var bban: string = IBAN.toBBAN(iban, separator);
-}
\ No newline at end of file
+}
diff --git a/types/prismic-dom/index.d.ts b/types/prismic-dom/index.d.ts
new file mode 100644
index 0000000000..2849cc7791
--- /dev/null
+++ b/types/prismic-dom/index.d.ts
@@ -0,0 +1,13 @@
+// Type definitions for prismic-dom 2.0
+// Project: https://github.com/prismicio/prismic-dom#readme
+// Definitions by: Nick Whyte
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+
+interface RichText {
+ asHtml(richText: any, linkResolver?: (doc: any) => string): string;
+}
+
+export const RichText: RichText;
+
+declare const _default: { RichText: RichText };
+export default _default;
diff --git a/types/prismic-dom/prismic-dom-tests.ts b/types/prismic-dom/prismic-dom-tests.ts
new file mode 100644
index 0000000000..598573cced
--- /dev/null
+++ b/types/prismic-dom/prismic-dom-tests.ts
@@ -0,0 +1,3 @@
+import prismicDom = require("prismic-dom");
+
+const rendered: string = prismicDom.RichText.asHtml({});
diff --git a/types/prismic-dom/tsconfig.json b/types/prismic-dom/tsconfig.json
new file mode 100644
index 0000000000..0687e7ae0e
--- /dev/null
+++ b/types/prismic-dom/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "prismic-dom-tests.ts"
+ ]
+}
diff --git a/types/prismic-dom/tslint.json b/types/prismic-dom/tslint.json
new file mode 100644
index 0000000000..3db14f85ea
--- /dev/null
+++ b/types/prismic-dom/tslint.json
@@ -0,0 +1 @@
+{ "extends": "dtslint/dt.json" }
diff --git a/types/stellar-sdk/index.d.ts b/types/stellar-sdk/index.d.ts
new file mode 100644
index 0000000000..e4a6e6a06f
--- /dev/null
+++ b/types/stellar-sdk/index.d.ts
@@ -0,0 +1,862 @@
+// Type definitions for stellar-sdk 0.8
+// Project: https://github.com/stellar/js-stellar-sdk
+// Definitions by: Carl Foster
+// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
+// TypeScript Version: 2.4
+
+///
+
+export class Account {
+ constructor(accountId: string, sequence: string | number)
+ accountId(): string;
+ sequenceNumber(): string;
+ incrementSequenceNumber(): void;
+}
+
+export class CallBuilder {
+ constructor(serverUrl: string)
+ call(): Promise>;
+ cursor(cursor: string): this;
+ limit(limit: number): this;
+ order(direction: 'asc' | 'desc'): this;
+ stream(options?: { onmessage?: () => void, onerror?: () => void }): () => void;
+}
+
+export interface CollectionPage {
+ records: T[];
+ next: () => Promise>;
+ prev: () => Promise>;
+}
+
+export interface Record {
+ _links: {
+ [key: string]: RecordLink
+ };
+}
+
+export interface RecordLink {
+ href: string;
+ templated?: boolean;
+}
+
+/* Due to a bug with the recursive function requests */
+export interface CollectionRecord {
+ _links: {
+ next: RecordLink
+ prev: RecordLink
+ self: RecordLink
+ };
+ _embedded: {
+ records: T[]
+ };
+}
+
+export interface CallFunctionTemplateOptions {
+ cursor?: string | number;
+ limit?: number;
+ order?: 'asc' | 'desc';
+}
+
+export type CallFunction = () => Promise;
+export type CallCollectionFunction =
+ (options?: CallFunctionTemplateOptions) => Promise>;
+
+export interface AccountRecord extends Record {
+ id: string;
+ paging_token: string;
+ account_id: string;
+ sequence: number;
+ subentry_count: number;
+ thresholds: {
+ low_threshold: number
+ med_threshold: number
+ high_threshold: number
+ };
+ flags: {
+ auth_required: boolean
+ auth_revocable: boolean
+ };
+ balances: Array<
+ {
+ balance: string
+ asset_type: 'native'
+ } |
+ {
+ balance: string
+ limit: string
+ asset_type: 'credit_alphanum4' | 'credit_alphanum12'
+ asset_code: string
+ asset_issuer: string
+ }
+ >;
+ signers: Array<
+ {
+ _key: string
+ weight: number
+ }
+ >;
+ data: {
+ [key: string]: string
+ };
+
+ effects: CallCollectionFunction;
+ offers: CallCollectionFunction;
+ operations: CallCollectionFunction;
+ payments: CallCollectionFunction;
+ trades: CallCollectionFunction;
+}
+
+export interface AssetRecord extends Record {
+ asset_type: 'credit_alphanum4' | 'credit_alphanum12';
+ asset_code: string;
+ asset_issuer: string;
+ paging_token: string;
+ amount: string;
+ num_accounts: number;
+ flags: {
+ auth_required: boolean
+ auth_revocable: boolean
+ };
+}
+
+export interface EffectRecord extends Record {
+ account: string;
+ paging_token: string;
+ starting_balance: string;
+ type_i: string;
+ type: string;
+
+ operation?: CallFunction;
+ precedes?: CallFunction;
+ succeeds?: CallFunction;
+}
+
+export interface LedgerRecord extends Record {
+ id: string;
+ paging_token: string;
+ hash: string;
+ prev_hash: string;
+ sequence: number;
+ transaction_count: number;
+ operation_count: number;
+ closed_at: string;
+ total_coins: string;
+ fee_pool: string;
+ base_fee: number;
+ base_reserve: string;
+ max_tx_set_size: number;
+ protocol_version: number;
+ header_xdr: string;
+ base_fee_in_stroops: number;
+ base_reserve_in_stroops: number;
+
+ effects: CallCollectionFunction;
+ operations: CallCollectionFunction;
+ self: CallFunction;
+ transactions: CallCollectionFunction;
+}
+
+export interface OfferRecord extends Record {
+ id: string;
+ paging_token: string;
+ seller_attr: string;
+ selling: Asset;
+ buying: Asset;
+ amount: string;
+ price_r: { numerator: number, denominator: number };
+ price: string;
+
+ seller?: CallFunction;
+}
+
+export interface BaseOperationRecord extends Record {
+ id: string;
+ paging_token: string;
+ type: string;
+ type_i: number;
+
+ self: CallFunction;
+ succeeds: CallFunction;
+ precedes: CallFunction;
+ effects: CallCollectionFunction;
+ transaction: CallFunction;
+}
+
+export interface CreateAccountOperationRecord extends BaseOperationRecord {
+ type: 'create_account';
+ account: string;
+ funder: string;
+ starting_balance: string;
+}
+
+export interface PaymentOperationRecord extends BaseOperationRecord {
+ type: 'payment';
+ from: string;
+ to: string;
+ asset_type: string;
+ asset_code?: string;
+ asset_issuer?: string;
+ amount: string;
+
+ sender: CallFunction;
+ receiver: CallFunction;
+}
+
+export interface PathPaymentOperationRecord extends BaseOperationRecord {
+ type: 'path_payment';
+ from: string;
+ to: string;
+ asset_code?: string;
+ asset_issuer?: string;
+ asset_type: string;
+ amount: string;
+ source_asset_code?: string;
+ source_asset_issuer?: string;
+ source_asset_type: string;
+ source_max: string;
+ source_amount: string;
+}
+
+export interface ManageOfferOperationRecord extends BaseOperationRecord {
+ type: 'manage_offer';
+ offer_id: number;
+ amount: string;
+ buying_asset_code?: string;
+ buying_asset_issuer?: string;
+ buying_asset_type: string;
+ price: string;
+ price_r: { numerator: number, denominator: number };
+ selling_asset_code?: string;
+ selling_asset_issuer?: string;
+ selling_asset_type: string;
+}
+
+export interface PassiveOfferOperationRecord extends BaseOperationRecord {
+ type: 'create_passive_offer';
+ offer_id: number;
+ amount: string;
+ buying_asset_code?: string;
+ buying_asset_issuer?: string;
+ buying_asset_type: string;
+ price: string;
+ price_r: { numerator: number, denominator: number };
+ selling_asset_code?: string;
+ selling_asset_issuer?: string;
+ selling_asset_type: string;
+}
+
+export interface SetOptionsOperationRecord extends BaseOperationRecord {
+ type: 'set_options';
+ signer_key?: string;
+ signer_weight?: number;
+ master_key_weight?: number;
+ low_threshold?: number;
+ med_threshold?: number;
+ high_threshold?: number;
+ home_domain?: string;
+ set_flags: Array<(1 | 2)>;
+ set_flags_s: Array<('auth_required_flag' | 'auth_revocable_flag')>;
+ clear_flags: Array<(1 | 2)>;
+ clear_flags_s: Array<('auth_required_flag' | 'auth_revocable_flag')>;
+}
+
+export interface ChangeTrustOperationRecord extends BaseOperationRecord {
+ type: 'change_trust';
+ asset_code: string;
+ asset_issuer: string;
+ asset_type: string;
+ trustee: string;
+ trustor: string;
+ limit: string;
+}
+
+export interface AllowTrustOperationRecord extends BaseOperationRecord {
+ type: 'allow_trust';
+ asset_code: string;
+ asset_issuer: string;
+ asset_type: string;
+ authorize: boolean;
+ trustee: string;
+ trustor: string;
+}
+
+export interface AccountMergeOperationRecord extends BaseOperationRecord {
+ type: 'account_merge';
+ into: string;
+}
+
+export interface InflationOperationRecord extends BaseOperationRecord {
+ type: 'inflation';
+}
+
+export interface ManageDataOperationRecord extends BaseOperationRecord {
+ type: 'manage_data';
+ name: string;
+ value: string;
+}
+
+export type OperationRecord = CreateAccountOperationRecord
+ | PaymentOperationRecord
+ | PathPaymentOperationRecord
+ | ManageOfferOperationRecord
+ | PassiveOfferOperationRecord
+ | SetOptionsOperationRecord
+ | ChangeTrustOperationRecord
+ | AllowTrustOperationRecord
+ | AccountMergeOperationRecord
+ | InflationOperationRecord
+ | ManageDataOperationRecord;
+
+export interface OrderbookRecord extends Record {
+ bids: Array<{ price_r: {}, price: number, amount: string }>;
+ asks: Array<{ price_r: {}, price: number, amount: string }>;
+ selling: Asset;
+ buying: Asset;
+}
+
+export interface PaymentPathRecord extends Record {
+ path: Array<{
+ asset_code: string
+ asset_issuer: string
+ asset_type: string
+ }>;
+ source_amount: string;
+ source_asset_type: string;
+ source_asset_code: string;
+ source_asset_issuer: string;
+ destination_amount: string;
+ destination_asset_type: string;
+ destination_asset_code: string;
+ destination_asset_issuer: string;
+}
+
+export interface TradeRecord extends Record {
+ id: string;
+ paging_token: string;
+ ledger_close_time: string;
+ base_account: string;
+ base_amount: string;
+ base_asset_type: string;
+ base_asset_code: string;
+ base_asset_issuer: string;
+ counter_account: string;
+ counter_amount: string;
+ counter_asset_type: string;
+ counter_asset_code: string;
+ counter_asset_issuer: string;
+ base_is_seller: boolean;
+
+ base: CallFunction;
+ counter: CallFunction;
+ operation: CallFunction;
+}
+
+export interface TradeAggregationRecord extends Record {
+ timestamp: string;
+ trade_count: number;
+ base_volume: string;
+ counter_volume: string;
+ avg: string;
+ high: string;
+ low: string;
+ open: string;
+ close: string;
+}
+
+export interface TransactionRecord extends Record {
+ id: string;
+ paging_token: string;
+ hash: string;
+ ledger_attr: number;
+ created_at: string;
+ max_fee: number;
+ fee_paid: number;
+ operation_count: number;
+ result_code: number;
+ result_code_s: string;
+ source_account: string;
+ source_account_sequence: string;
+ envelope_xdr: string;
+ result_xdr: string;
+ result_meta_xdr: string;
+ memo: string;
+
+ account: CallFunction;
+ effects: CallCollectionFunction;
+ ledger: CallFunction;
+ operations: CallCollectionFunction;
+ precedes: CallFunction;
+ self: CallFunction;
+ succeeds: CallFunction;
+}
+
+export class AccountCallBuilder extends CallBuilder {
+ accountId(id: string): this;
+}
+export class AccountResponse implements AccountRecord {
+ _links: { [key: string]: { href: string } };
+ id: string;
+ paging_token: string;
+ account_id: string;
+ sequence: number;
+ subentry_count: number;
+ thresholds: {
+ low_threshold: number
+ med_threshold: number
+ high_threshold: number
+ };
+ flags: {
+ auth_required: boolean
+ auth_revocable: boolean
+ };
+ balances: Array<
+ {
+ balance: string
+ asset_type: 'native'
+ } |
+ {
+ balance: string
+ limit: string
+ asset_type: 'credit_alphanum4' | 'credit_alphanum12'
+ asset_code: string
+ asset_issuer: string
+ }
+ >;
+ signers: Array<
+ {
+ _key: string
+ weight: number
+ }
+ >;
+ data: {
+ [key: string]: string
+ };
+
+ effects: CallCollectionFunction;
+ offers: CallCollectionFunction;
+ operations: CallCollectionFunction;
+ payments: CallCollectionFunction;
+ trades: CallCollectionFunction;
+ constructor(response: AccountRecord)
+ accountId(): string;
+ sequenceNumber(): string;
+ incrementSequenceNumber(): void;
+}
+
+export class Asset {
+ static native(): Asset;
+ constructor(code: string, issuer: string)
+
+ getCode(): string;
+ getIssuer(): string;
+ getAssetType(): 'native' | 'credit_alphanum4' | 'credit_alphanum12';
+ isNative(): boolean;
+ equals(other: Asset): boolean;
+
+ code: string;
+ issuer: string;
+}
+
+export class AssetsCallBuilder extends CallBuilder {
+ forCode(value: string): this;
+ forIssuer(value: string): this;
+}
+
+export namespace Config {
+ function setAllowHttp(allow: boolean): void;
+ function isAllowHttp(): boolean;
+ function setDefault(): void;
+}
+
+export class EffectCallBuilder extends CallBuilder {
+ forAccount(accountId: string): this;
+ forLedger(sequence: string): this;
+ forOperation(operationId: number): this;
+ forTransaction(transactionId: string): this;
+}
+
+export interface FederationRecord {
+ account_id: string;
+ memo_type?: string;
+ memo?: string;
+}
+
+export interface FederationOptions {
+ allowHttp: boolean;
+}
+export class FederationServer {
+ static createForDomain(domain: string, options?: FederationOptions): Promise;
+ static resolve(value: string, options?: FederationOptions): Promise;
+
+ constructor(serverURL: string, domain: string, options?: FederationOptions)
+ resolveAccountId(account: string): Promise;
+ resolveAddress(address: string): Promise;
+ resolveTransactionId(transactionId: string): Promise;
+}
+
+export class LedgerCallBuilder extends CallBuilder { }
+
+export class Memo {
+ static fromXDRObject(memo: xdr.Memo): Memo;
+ static hash(hash: string): Memo;
+ static id(id: string): Memo;
+ static none(): Memo;
+ static return(hash: string): Memo;
+ static text(text: string): Memo;
+
+ constructor(type: 'MemoNone')
+ constructor(type: 'MemoID' | 'MemoText', value: string)
+ constructor(type: 'MemoHash' | 'MemoReturn', value: Buffer)
+
+ type: 'MemoNone' | 'MemoID' | 'MemoText' | 'MemoHash' | 'MemoReturn';
+ value: null | string | Buffer;
+
+ toXDRObject(): xdr.Memo;
+}
+
+export enum Networks {
+ PUBLIC = 'Public Global Stellar Network ; September 2015',
+ TESTNET = 'Test SDF Network ; September 2015',
+}
+
+export class Network {
+ static use(network: Network): void;
+ static usePublicNetwork(): void;
+ static useTestNetwork(): void;
+ static current(): Network;
+
+ constructor(passphrase: string)
+
+ networkPassphrase(): string;
+ networkId(): string;
+}
+
+export class OfferCallBuilder extends CallBuilder { }
+
+export type TransactionOperation =
+ Operation.CreateAccount
+ | Operation.Payment
+ | Operation.PathPayment
+ | Operation.CreatePassiveOffer
+ | Operation.ManageOffer
+ | Operation.SetOptions
+ | Operation.ChangeTrust
+ | Operation.AllowTrust
+ | Operation.AccountMerge
+ | Operation.Inflation
+ | Operation.ManageData;
+
+export enum OperationType {
+ createAccount = 'createAccount',
+ payment = 'payment',
+ pathPayment = 'pathPayment',
+ createPassiveOffer = 'createPassiveOffer',
+ manageOffer = 'manageOffer',
+ setOptions = 'setOptions',
+ changeTrust = 'changeTrust',
+ allowTrust = 'allowTrust',
+ accountMerge = 'accountMerge',
+ inflation = 'inflation',
+ manageData = 'manageData',
+}
+
+export namespace Operation {
+ interface Operation {
+ type: OperationType;
+ source: string | null;
+ }
+ interface AccountMerge extends Operation {
+ type: OperationType.accountMerge;
+ destination: string;
+ }
+ interface AccountMergeOptions {
+ destination: string;
+ source?: string;
+ }
+ function accountMerge(options: AccountMergeOptions): xdr.Operation;
+
+ interface AllowTrust extends Operation {
+ type: OperationType.allowTrust;
+ trustor: string;
+ assetCode: string;
+ authorize: boolean;
+ }
+ interface AllowTrustOptions {
+ trustor: string;
+ assetCode: string;
+ authorize: boolean;
+ source?: string;
+ }
+ function allowTrust(options: AllowTrustOptions): xdr.Operation;
+
+ interface ChangeTrust extends Operation {
+ type: OperationType.changeTrust;
+ line: Asset;
+ limit: string | number;
+ }
+ interface ChangeTrustOptions {
+ asset: Asset;
+ limit: string;
+ source?: string;
+ }
+ function changeTrust(options: ChangeTrustOptions): xdr.Operation;
+
+ interface CreateAccount extends Operation {
+ type: OperationType.createAccount;
+ source: string;
+ destination: string;
+ startingBalance: string | number;
+ }
+ interface CreateAccountOptions {
+ destination: string;
+ startingBalance: string;
+ source?: string;
+ }
+ function createAccount(options: CreateAccountOptions): xdr.Operation;
+
+ interface CreatePassiveOffer extends Operation {
+ type: OperationType.createPassiveOffer;
+ selling: Asset;
+ buying: Asset;
+ amount: string | number;
+ price: string | number;
+ }
+ interface CreatePassiveOfferOptions {
+ selling: Asset;
+ buying: Asset;
+ amount: string;
+ price: number | string | object;
+ source?: string;
+ }
+ function createPassiveOffer(options: CreatePassiveOfferOptions): xdr.Operation;
+
+ interface Inflation extends Operation {
+ type: OperationType.inflation;
+ }
+ function inflation(options: { source?: string }): xdr.Operation;
+
+ interface ManageData extends Operation {
+ type: OperationType.manageData;
+ name: string;
+ value: string;
+ }
+ interface ManageDataOptions {
+ name: string;
+ value: string | Buffer;
+ source?: string;
+ }
+ function manageData(options: ManageDataOptions): xdr.Operation;
+
+ interface ManageOffer extends Operation {
+ type: OperationType.manageOffer;
+ selling: Asset;
+ buying: Asset;
+ amount: string | number;
+ price: string | number;
+ offerId: string;
+ }
+ interface ManageOfferOptions extends CreatePassiveOfferOptions {
+ offerId: number | string;
+ }
+ function manageOffer(options: ManageOfferOptions): xdr.Operation;
+
+ interface PathPayment extends Operation {
+ type: OperationType.pathPayment;
+ sendAsset: Asset;
+ sendMax: string | number;
+ destination: string;
+ destAsset: Asset;
+ destAmount: string | number;
+ path: Asset[];
+ }
+ interface PathPaymentOptions {
+ sendAsset: Asset;
+ sendMax: string;
+ destination: string;
+ destAsset: Asset;
+ destAmount: string;
+ path: Asset[];
+ source?: string;
+ }
+ function pathPayment(options: PathPaymentOptions): xdr.Operation;
+
+ interface Payment extends Operation {
+ type: OperationType.payment;
+ destination: string;
+ asset: Asset;
+ amount: string | number;
+ }
+ interface PaymentOptions {
+ destination: string;
+ asset: Asset;
+ amount: string;
+ source?: string;
+ }
+ function payment(options: PaymentOptions): xdr.Operation;
+
+ /*
+ * Required = 1 << 0
+ * Revocable = 1 << 1
+ * Immutable = 1 << 2
+ */
+ enum AuthFlags {
+ Required = 1,
+ Revocable = 2,
+ Immutable = 4,
+ }
+ interface Signer {
+ ed25519PublicKey?: string;
+ sha256Hash?: Buffer | string;
+ preAuthTx?: Buffer | string;
+ weight?: number | string;
+ }
+ interface SetOptions extends Operation {
+ type: OperationType.setOptions;
+ inflationDest?: string;
+ clearFlags?: AuthFlags;
+ setFlags?: AuthFlags;
+ masterWeight?: number | string;
+ lowThreshold?: number | string;
+ medThreshold?: number | string;
+ highThreshold?: number | string;
+ homeDomain?: string;
+ signer?: Signer;
+ }
+ interface SetOptionsOptions {
+ inflationDest?: string;
+ clearFlags?: AuthFlags;
+ setFlags?: AuthFlags;
+ masterWeight?: number | string;
+ lowThreshold?: number | string;
+ medThreshold?: number | string;
+ highThreshold?: number | string;
+ signer?: Signer;
+ homeDomain?: string;
+ source?: string;
+ }
+ function setOptions(options: SetOptionsOptions): xdr.Operation;
+
+ function fromXDRObject(xdrOperation: xdr.Operation): T;
+}
+
+export class OperationCallBuilder extends CallBuilder { }
+export class OrderbookCallBuilder extends CallBuilder { }
+export class PathCallBuilder extends CallBuilder { }
+export class PaymentCallBuilder extends CallBuilder { }
+
+export class Server {
+ constructor(serverURL: string, options?: { allowHttp: boolean })
+ accounts(): AccountCallBuilder;
+ assets(): AssetsCallBuilder;
+ effects(): EffectCallBuilder;
+ ledgers(): LedgerCallBuilder;
+ loadAccount(accountId: string): Promise;
+ offers(resource: string, ...parameters: string[]): OfferCallBuilder;
+ operations(): OperationCallBuilder;
+ orderbook(selling: Asset, buying: Asset): OrderbookCallBuilder;
+ paths(
+ source: string,
+ destination: string,
+ destinationAsset: Asset,
+ destinationAmount: string,
+ ): PathCallBuilder;
+ payments(): PaymentCallBuilder;
+ submitTransaction(transaction: Transaction): Promise;
+ tradeAggregation(
+ base: Asset,
+ counter: Asset,
+ startTime: Date,
+ endTime: Date,
+ resolution: Date,
+ ): TradeAggregationCallBuilder;
+ trades(): TradesCallBuilder;
+ transactions(): TransactionCallBuilder;
+}
+
+export namespace StrKey {
+ function encodeEd25519PublicKey(data: Buffer): string;
+ function decodeEd25519PublicKey(data: string): Buffer;
+ function isValidEd25519PublicKey(Key: string): boolean;
+
+ function encodeEd25519SecretSeed(data: Buffer): string;
+ function decodeEd25519SecretSeed(data: string): Buffer;
+ function isValidEd25519SecretSeed(seed: string): boolean;
+
+ function encodePreAuthTx(data: Buffer): string;
+ function decodePreAuthTx(data: string): Buffer;
+
+ function encodeSha256Hash(data: Buffer): string;
+ function decodeSha256Hash(data: string): Buffer;
+}
+
+export class TradeAggregationCallBuilder extends CallBuilder { }
+export class TradesCallBuilder extends CallBuilder {
+ forAssetPair(base: Asset, counter: Asset): this;
+ forOffer(offerId: string): this;
+}
+
+export class Transaction {
+ constructor(envelope: string | xdr.TransactionEnvelope)
+ hash(): Buffer;
+ sign(...keypairs: Keypair[]): void;
+ signatureBase(): Buffer;
+ signHashX(preimage: Buffer | string): void;
+ toEnvelope(): xdr.TransactionEnvelope;
+
+ operations: TransactionOperation[];
+ sequence: number;
+ fee: number;
+ source: string;
+ memo: Memo;
+}
+
+export class TransactionBuilder {
+ constructor(sourceAccount: Account, options?: TransactionBuilder.TransactionBuilderOptions)
+ addOperation(operation: xdr.Operation): this;
+ addMemo(memo: Memo): this;
+ build(): Transaction;
+}
+
+export namespace TransactionBuilder {
+ interface TransactionBuilderOptions {
+ fee?: number;
+ timebounds?: {
+ minTime?: number | string
+ maxTime?: number | string
+ };
+ memo?: Memo;
+ }
+}
+
+export class TransactionCallBuilder extends CallBuilder {
+ transaction(transactionId: string): this;
+ forAccount(accountId: string): this;
+ forLedger(sequence: string | number): this;
+}
+
+export class Keypair {
+ static fromRawEd25519Seed(secretSeed: Buffer): Keypair;
+ static fromSecret(secretKey: string): Keypair;
+ static master(): Keypair;
+ static fromPublicKey(publicKey: string): Keypair;
+ static random(): Keypair;
+
+ constructor(keys: { type: 'ed25519', secretKey: string } | { type: 'ed25519', Key: string })
+
+ publicKey(): string;
+ secret(): string;
+ rawSecretKey(): Buffer;
+ canSign(): boolean;
+ sign(data: Buffer): Buffer;
+ verify(data: Buffer, signature: Buffer): boolean;
+}
+
+export namespace xdr {
+ class XDRStruct {
+ toXDR(): Buffer;
+ }
+ class Operation extends XDRStruct { }
+ class Asset extends XDRStruct { }
+ class Memo extends XDRStruct { }
+ class TransactionEnvelope extends XDRStruct { }
+}
diff --git a/types/stellar-sdk/stellar-sdk-tests.ts b/types/stellar-sdk/stellar-sdk-tests.ts
new file mode 100644
index 0000000000..4bd84ccc33
--- /dev/null
+++ b/types/stellar-sdk/stellar-sdk-tests.ts
@@ -0,0 +1,9 @@
+import * as StellarSdk from 'stellar-sdk';
+
+const sourceKey = StellarSdk.Keypair.random(); // $ExpectType Keypair
+const destKey = StellarSdk.Keypair.random();
+const account = new StellarSdk.Account(sourceKey.publicKey(), 1);
+const transaction = new StellarSdk.TransactionBuilder(account)
+ .addOperation(StellarSdk.Operation.accountMerge({destination: destKey.publicKey()}))
+ .build(); // $ExpectType () => Transaction
+transaction; // $ExpectType Transaction
diff --git a/types/stellar-sdk/tsconfig.json b/types/stellar-sdk/tsconfig.json
new file mode 100644
index 0000000000..12dfa57fa0
--- /dev/null
+++ b/types/stellar-sdk/tsconfig.json
@@ -0,0 +1,23 @@
+{
+ "compilerOptions": {
+ "module": "commonjs",
+ "lib": [
+ "es6"
+ ],
+ "noImplicitAny": true,
+ "noImplicitThis": true,
+ "strictNullChecks": true,
+ "strictFunctionTypes": true,
+ "baseUrl": "../",
+ "typeRoots": [
+ "../"
+ ],
+ "types": [],
+ "noEmit": true,
+ "forceConsistentCasingInFileNames": true
+ },
+ "files": [
+ "index.d.ts",
+ "stellar-sdk-tests.ts"
+ ]
+}
diff --git a/types/stellar-sdk/tslint.json b/types/stellar-sdk/tslint.json
new file mode 100644
index 0000000000..f93cf8562a
--- /dev/null
+++ b/types/stellar-sdk/tslint.json
@@ -0,0 +1,3 @@
+{
+ "extends": "dtslint/dt.json"
+}